以下是我的陈述的样子。
$stmt = $this->db->prepare("
select q.id
from questions q
left outer join (
select max(chk_date) as questions_last_chk_date
FROM last_check_date
where user_id = ?
AND chk_token=?) lcd
on q.add_dt > lcd.questions_last_chk_date
WHERE q.author_id<>?
") or die($this->db->error);
$stmt->bind_param("isi", $_SESSION["userID"], "q", $_SESSION["userID"]) or die($stmt->error);
我有两个问题
1)获取错误消息
致命错误:无法通过引用传递参数3
为什么会出现此错误?顺便说一句,我知道last_check_date
表是空的,但我认为它与此问题无关。
2)在Windows上,获取错误消息表last_check_date
不存在,但我100%知道没有拼写错误,并且表存在。我尝试使用Navicat - db amanger应用程序进行相同的查询并获得结果。但是当我尝试用PHP获取此错误时。在远程Linux服务器上它工作,并收到问题1中的错误消息。尝试重新启动mysql服务,重命名为其他名称并将名称更改回以前的名称。没有成功!我该如何解决这个问题?
答案 0 :(得分:3)
您必须将q
放入变量。
仅供参考,尽量不要使用字符串值等于表别名或引用。当您拥有包含q
别名的表时,您传递的值为q
。这不是错误,但如果您需要对查询进行回显,可能会非常混乱。