This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center




8年前关闭。




我运行以下代码:
$conn = new PDO(....);
.... pdo attributes ...

$limitvalue = 0;
$limit = 10;
$sql = $conn->prepare("SELECT * FROM table1 LIMIT ?, ?");
$sql->bindParam(1, $limitvalue, PDO::PARAM_INT);
$sql->bindParam(2, $limit, PDO::PARAM_INT);
$sql->execute();

我得到:



它只发生在这个特定的查询中。其他一切正常。

顺便说一句:我知道我为“代码中”值准备语句可能看起来很愚蠢。但这只是一个例子。事实上,这些值取决于页码,但在这里无关紧要 - 此查询也给出了相同的错误。

如果有人感兴趣,PHP 版本是: 5.3.4RC2 而 MySQL 的版本是: mysqlnd 5.0.7-dev - 091210 - $Revision: 304625 $

最佳答案

这似乎是一个 php bug :PDO 忽略 PARAM_INT 常量并使用 $limit$limitvalue 变量作为字符串。绑定(bind)时在查询中引用的内容。

尝试使用:

$sql->bindParam(1, (int)$limitvalue, PDO::PARAM_INT);
$sql->bindParam(2, (int)$limit, PDO::PARAM_INT);

强制变量类型为int。

关于php - PDO Mysql 语法错误 1064,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6777154/

10-14 15:23
查看更多