4
我遇到了mysqli_stmt準備函數的一個小問題。這裏是我的查詢:Mysqli準備語句+綁定順序BY
$params = array(
"sisi",
"some_string",
5000,
"date_added DESC"
);
$sql = "SELECT *
FROM scenes
WHERE scene_title LIKE ?
AND scene_id > ?
ORDER BY ?
LIMIT ?";
現在,當我的PARAMS綁定到這樣的陣列(我有一個實例有效mysqli_stmt對象):由
call_user_func_array(array($this->mysql_stmt, 'bind_param'), $params);
順序沒有綁定。我在php.net閱讀(http://ca3.php.net/manual/en/mysqli.prepare.php)
的標誌是僅在SQL語句一定 地方法律。例如, 它們可以在INSERT語句的VALUES()列表 (用於指定行的列值 )或與WHERE 子句中的列進行比較以指定比較值。
然而,他們沒有允許 標識符(如表或列 名),在名稱 列由一個SELECT 語句返回,或者指定兩個操作數的二進制的 選擇列表運算符如= 等號。
有沒有辦法解決這個問題,或者我將不得不使用mysql_real_escape_char()作爲ORDER BY子句?
Bah,是的,我會強制應用程序開發人員使用我的db類的函數來設置這些屬性。我想讓mysqli prepare語句處理用戶定義輸入的所有消毒。 – gprime 2011-01-20 16:20:32