我正在使用PDO並提供用戶可以用其搜索結果選擇的選項。一些示例是排序,結果數量,頁碼等。我嘗試使用預準備語句來驗證此數據以防止SQL注入攻擊,但變量永遠不會傳遞到查詢中。爲PDO使用MySQL查詢選項準備好的語句
我在做什麼錯?結果的排序和數量是SELECT菜單,頁碼是文本輸入表單,可以輸入數字。
$query = "SELECT SQL_CALC_FOUND_ROWS * FROM people ORDER BY id :sortBy LIMIT $start, :total";
$result = $conn->prepare($query);
$result->bindValue(":sortBy", $sortBy, PDO::PARAM_STR);
$result->bindValue(":total", $total, PDO::PARAM_INT);
你如何確定「變量永遠不會傳遞到查詢中」? – deceze
你爲什麼要綁定一些,而不是全部?即'$ start'。 –
當我刪除bindValues並在查詢中輸入ASC和100代替:sortBy和:totalResults時,它可以工作。 – Zoolander