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

4

1 回答 1

3

你必须放入q一个变量。

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

于 2012-06-04T18:32:45.687 回答