在查询中使用PDO预处理语句和LIMIT时出错

Moh*_*eri 11 php mysql pdo prepared-statement limit

我在我的应用程序中使用PDO.但是当我在包含的查询中使用预准备语句时,我遇到了问题LIMIT.有什么问题?
代码:

$start = 0;
$rows = 20;
$sql = "SELECT * FROM tbl_news ORDER BY date DESC LIMIT ?, ?";
$q = $db->prepare($sql);
$q->execute(array($start , $rows));
Run Code Online (Sandbox Code Playgroud)

错误:

检查与MySQL服务器版本对应的手册,以便在"0","20"附近使用正确的语法

Moh*_*eri 10

关于使用预准备语句在MySQL上发布LIMIT关键字,下面的代码可以解决我的问题.

$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
Run Code Online (Sandbox Code Playgroud)

由于阿尔瓦罗·维卡里奥G.Maerlyn


Aka*_* KC 7

你可以这样做:

$sql = SELECT * FROM tbl_news ORDER BY date DESC LIMIT :start, :rows";
$q = $db->prepare($sql);
$q->bindParam(':start', $start, PDO::PARAM_INT);
$q->bindParam(':rows',$rows, PDO::PARAM_INT);
Run Code Online (Sandbox Code Playgroud)

  • Limit需要一个整数,将您的限制变量强制为整数可以解决实际的问题(已使用的变量不能识别为整数)在绑定时强制使用它,您将不必担心您的限制变量的类型:)。所以这个答案应该已经被接受了。 (2认同)