Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 奇怪的准备语句错误_Php_Mysql_Mysqli_Prepared Statement - Fatal编程技术网

Php 奇怪的准备语句错误

Php 奇怪的准备语句错误,php,mysql,mysqli,prepared-statement,Php,Mysql,Mysqli,Prepared Statement,下面是我的陈述 $stmt = $this->db->prepare(" select q.id from questions q left outer join ( select max(chk_date) as questions_last_chk_date

下面是我的陈述

               $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服务,重命名为其他名称,并将名称更改回以前的名称。没有成功!如何解决该问题?

必须将q放入变量中


仅供参考,尽量不要使用等于表别名或引用的字符串值。当您有一个具有q别名的表时,您正在传递q值。这不是一个错误,但如果需要对查询进行回显,可能会非常混乱。

我不是MySQLi专家,但我认为您无法将静态参数绑定到查询。在我看来这是完全合理的。因此,要么将参数3设置为一个变量并传递它,要么更改查询,使现在的参数3已经存在于其中。@clentfort I gachu。但无法使用外部联接来完成此工作。我没有外部连接的经验。这就是为什么把问题贴到社区的原因