【发布时间】:2012-04-18 08:09:18
【问题描述】:
SELECT id, content, date
FROM comment
WHERE post = ?
ORDER BY date DESC
LIMIT ?, ?
使用 PDO(我正在使用具有 Apache 2.2.21、PHP 最高 5.3.6 和 MySQL 5.5.9 的 MAMP 2.0.5)准备好的语句,如果我更改查询,这将不起作用
LIMIT 0, 10
它有效。
我在 MySQL 的 bug 中看到这是以前版本的 bug,但我不明白这是否仍然需要修复。
如果这仍然是一个问题,有没有办法以另一种方式选择一系列行?
代码:
$comments = $db->prepare($query);
/* where $db is the PDO object */
$comments->execute(array($post, $min, $max));
【问题讨论】:
-
如何绑定你的参数?
-
解决方法是将您替换到
LIMIT子句中的值转换为(int),并在查询中逐字指定它们。这是一个清理步骤,不能以破坏任何东西的方式规避,任何不是有效整数表示的字符串都将导致0。最坏的情况是,您没有得到任何结果。 -
$cmets = $db->prepare($query); /* 其中 $db 是 PDO 对象 */ $cmets->execute(array($post, $min, $max));
-
PHP 代码或其他任何内容没有错误, echo $db->errorInfo();显示“数组”
-
要回显一个数组,必须使用循环。或至少
var_dump()。
标签: php mysql prepared-statement limit