聯(lián)系官方銷售客服
1835022288
028-61286886
請(qǐng)問php文件,我寫一條自定義sql語句,表名用了@#代替,好像執(zhí)行的時(shí)候報(bào)錯(cuò)?@#只能用到模板文件中嗎?
sql語句沒有問題,我在adminphp下測試過!
\Phpcmf\Service::M()->db->query("UPDATE @#1_news as a,@#1_wgone as b SET b.updatetime ='2020-12-1' where a.title=b.title");
表名@#只能用在模板的sql標(biāo)簽里面,你在php里面需要寫上前綴函數(shù)
前綴函數(shù)?是完整的數(shù)據(jù)庫表名嗎?
表前綴是:.$this->prefix.
SELECT * FROM `".$this->prefix."member_menu` WHERE
\Phpcmf\Service::M()->db->prefix
\Phpcmf\Service::M()->db->query("UPDATE '".$this->prefix."1_news' as a,'".$this->prefix."1_wgone' as b SET b.updatetime ='2020-12-1' where a.id=b.cid");
報(bào)錯(cuò),哪里錯(cuò)了呢?
CRITICAL - 2020-12-07 15:11:43 --> Using $this when not in object context
#SQL:SELECT *
FROM `dr_cron`
WHERE `id` = 50
#URL:http://172.16.12.19/admin.php?c=cron&m=do_add&id=50
#AGENT:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36
#REFERER:http://172.16.12.19/admin.php?c=cron&m=index
明顯錯(cuò)了
.updatetime ='2020-12-1 錯(cuò)了,這里應(yīng)該是10位的整數(shù),來是格式化后的時(shí)間
不是
$this->prefix這個(gè)寫錯(cuò)了,改成五樓的寫法
\Phpcmf\Service::M()->db->query("UPDATE '".$this->prefix."1_news' as a,'".$this->prefix."1_wgone' as b SET b.updatetime =unix_timestamp(NOW()) where a.id=b.cid");
我改時(shí)間格式了,還是報(bào)錯(cuò)!
我自己的是這樣寫的

同意十樓的觀點(diǎn)
\Phpcmf\Service::M()->db->prefix();
$sql="UPDATE '".$this->prefix."1_news' as a,'".$this->prefix."1_news_form_tet' as b SET b.qy =unix_timestamp(NOW()) where a.id=b.cid";
\Phpcmf\Service::M()->db->query($sql);
CRITICAL - 2020-12-07 15:57:21 --> Call to undefined method CodeIgniter\Database\MySQLi\Connection::prefix()
$sql="UPDATE '".\Phpcmf\Service::M()->db->prefix."1_news' as a,'".$this->prefix."1_news_form_tet' as b SET b.qy =unix_timestamp(NOW()) where a.id=b.cid";
十樓的方法啊
$sql="UPDATE '".\Phpcmf\Service::M()->db->prefix."1_news' as a,'".$this->prefix."1_news_form_tet' as b SET b.qy =unix_timestamp(NOW()) where a.id=b.cid";
$rt = \Phpcmf\Service::M()->db->query($sql);
if ($rt) {
// 成功
} else {
//失敗
echo \Phpcmf\Service::M()->db->error();
}
還是這個(gè)錯(cuò)誤提示CRITICAL - 2020-12-07 16:40:50 --> Using $this when not in object context
同意十樓的觀點(diǎn)
$sql="UPDATE '".\Phpcmf\Service::M()->db->prefix."1_news' as a,'".\Phpcmf\Service::M()->db->prefix."1_news_form_tet' as b SET b.qy =unix_timestamp(NOW()) where a.id=b.cid";
$rt = \Phpcmf\Service::M()->db->query($sql);
if ($rt) {
// 成功
} else {
//失敗
echo \Phpcmf\Service::M()->db->error();
}
ERROR - 2020-12-07 16:48:37 --> You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1_news' as a,'1_news_form_tet' as b SET b.qy =unix_timestamp(NOW()) where a.id=' at line 1
#SQL:UPDATE '1_news' as a,'1_news_form_tet' as b SET b.qy =unix_timestamp(NOW()) where a.id=b.cid
撒比了,sql語法譜寫錯(cuò)誤了
先去phpmyadmin工具里面運(yùn)行一下吧
UPDATE test.dr_1_news as a,test.dr_1_news_form_tet as b SET b.qy =unix_timestamp(NOW()) where a.id=b.cid
數(shù)據(jù)庫里操作沒問題??!
UPDATE test.dr_1_news as a,test.dr_1_news_form_tet as b SET b.qy =unix_timestamp(NOW()) where a.id=b.cid
UPDATE '1_news' as a,'1_news_form_tet' as b SET b.qy =unix_timestamp(NOW()) where a.id=b.cid
你對(duì)比啊,少了什么,長度都不一樣了,而且還多了‘號(hào)
$sql="UPDATE test.dr_1_news as a,test.dr_1_news_form_tet as b SET b.qy =unix_timestamp(NOW()) where a.id=b.cid";
$rt = \Phpcmf\Service::M()->db->query($sql);
if ($rt) {
// 成功
} else {
//失敗
echo \Phpcmf\Service::M()->db->error();
}
我用原數(shù)據(jù)庫名稱放進(jìn)去都報(bào)錯(cuò),提示執(zhí)行失?。繛樯栋??數(shù)據(jù)庫里是成功的!