我有一个“ajax脚本/处理程序”,它返回一堆产品类别到我的jqGrid。在SQL最终看起来就像这样:PHP PDO问题与清理ORDER BY字段
$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();
现在,我已经与“$开始”的问题,因为PDO显然有一些问题与限制,使我不得不明确地将其设置为(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
您是否允许用户按列和方向输入自己的订单? –
什么是$ sord –
jqGrid发送上述脚本处理程序的列顺序字段和方向,例如:script.php?_search = false&nd = 1350834280848&rows = 10&page = 1&sidx = product_category&sord = desc将意味着脚本按照product_category字段顺序排列方向 – SupaMonkey