我遇到以下问题:
环境 PHP,带有PDO的codeigniter框架。
我的代码
public function index(){
$sql = "SELECT ........ LIMIT ?,?";
$q = $this->db->prepare($sql);
$limit = 0;
$offset = 10;
$q->execute(array($limit, $offset));
$r = $q->fetch();
var_dump($r);
}
问题:如果我在LIMIT子句中对任何整数(例如0,10)进行硬编码,则sql查询没有问题;查询返回所需的结果。 仅在绑定参数时才会出现此问题。
显示错误在上面的代码中转储$ r会返回 bool(false)
现在,以下代码成功运行,
public function index(){
$sql = "SELECT ........ LIMIT 0,10";
$q = $this->db->prepare($sql);
$q->execute();
$r = $q->fetch();
var_dump($r);
}
绑定时前代码中的问题可能是什么?我是错误地做错了还是因为codeigniter默认不支持PDO而有可能它正在爬行?
答案 0 :(得分:1)
据我所知,我正在回答。
您无法将变量绑定到LIMIT或ORDER by子句
解决方案:
将它作为sql查询中的变量传递(并且可能使用 intval 进行清理,以便更安全。)