我有一个“ajax 脚本/处理程序”,它将一堆产品类别返回到我的 jqGrid。sql最终看起来像这样:
$sql = 'SELECT * FROM product_categories ORDER BY :sidx :sord LIMIT :start , :limit';
$sth = $dbh->prepare($sql);
$sth->bindParam(':sidx', $sidx);
$sth->bindParam(':sord', $sord);
$sth->bindParam(':start', $start, PDO::PARAM_INT);
$sth->bindParam(':limit', $limit, PDO::PARAM_INT);
$sth->execute();
现在,我已经遇到了 '$start' 的问题,因为 PDO 显然有 LIMIT 的问题,所以我必须明确地将它设置为 (int) 以便上述方法可以工作。我的下一个问题是 ORDER BY 字段被引用。如何停止报价?我可以直接传递 '$sidx' 和 '$sord' 值而不对其进行清理,但这会很危险。现在,上面的 SQL 生成为:
SELECT * FROM product_categories ORDER BY 'product_category' 'asc' LIMIT 0 , 10
当我真正需要它看起来像:
SELECT * FROM product_categories ORDER BY product_category asc LIMIT 0 , 10