1

以下错误触发mysql错误,这是由于查询未将参数绑定到语句。我不明白为什么会这样。

这是 else 子句返回的错误:

ERROR -> 1064 : 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 '? ORDER BY dateCreated DESC' at line 4`

这是有问题的代码:

$userId = 1;
if ($stmt = $link->query("
    SELECT o.id, dateCreated, firstValue
    FROM user_orders o 
    LEFT JOIN order_delivery d ON o.id = d.id 
    WHERE o.userId = ? 
    ORDER BY dateCreated DESC
"))
{
    $stmt->bind_param("i", $userId);
    $stmt->execute();
    $stmt->close();
}
else
{
    $pageContent = '
        <p>ERROR -> '.$link->errno.' : '.$link->error.'</p>
    ';

}

有人可能会指出我在哪里出错以及为什么会发生这个mysql错误。

感谢您花时间阅读本文!

4

1 回答 1

6

使用mysqli::prepare, 不是query准备你准备好的陈述。

query将尝试运行该查询,该查询在绑定参数之前无效。

于 2012-08-05T12:47:40.087 回答