【发布时间】:2014-03-24 22:40:35
【问题描述】:
编辑1:这是not about LIMIT,这是关于传递一个整数。其他需要传递数字的功能是IN
编辑 2:我应该使用 PDO::PARAM_INT 吗?
当我这样做时:
$query .= ' LIMIT ? , ? ';
$values [] = $offset ;
$values [] = $rows ;
在这一行:
$db->fetchAll ( $query , $values);
而不是执行:
SELECT ....... LIMIT 0 , 10;
它试图执行:
SELECT ....... LIMIT '0' , '10';
导致错误:错误代码:1064。您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在 ''0' ,'10'' 附近使用的正确语法
注意1。我知道limit in the $params array.有一个选项。
注2.有一个问题与here相关
注意 3. 我尝试过:$values [] = intval($offset)、$values [] = (int)$offset,甚至是一个整数,例如:$values [] = 10
【问题讨论】:
-
@prix,谢谢,但这不是关于 LIMIT,我只是把它放在那里作为示例,但我有一些查询也需要传递整数。
-
虽然我认为你应该使用准备好的语句,但如果你找不到其他可行的方法,你可以强制
$offset和$rows为 int,然后将它们连接到你的查询中,而不是而不是做一个准备好的陈述。虽然我不太喜欢这个解决方案,但只要确保 $offset 和 $rows 是整数,它应该是安全的。