我有一個「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