1
这是我的声明是如何看起来像。奇怪的准备语句错误
$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);
我有2个问题
1)获得错误信息
致命错误:无法通过引用
为什么会出现此错误传递参数3?顺便说一句,我知道last_check_date
表是空的,但我认为这与这个问题没有关系。
2)在windows上,获取错误消息表last_check_date
不存在,但我100%知道没有错字,并且存在表。我用Navicat - db amanger应用程序尝试了相同的查询并得到了结果。但是,当我尝试使用PHP获取此错误。在远程Linux服务器上它工作,并在问题1中获取错误消息。尝试重新启动mysql服务,重命名为其他名称并将名称更改回上一个。没有成功!我该如何解决这个问题?
我不是MySQLi专家,但我认为你不能将静态参数绑定到查询。在我看来,这是完全合理的。因此,要么将参数3设置为变量并传递它,要么更改查询,以便现在参数3已经存在。 – clentfort
@clentfort我gachu。但无法通过外连接获得此项工作。我没有外连接的经验。这就是为什么向社区发布问题 – heron