我正在使用PDO的搜索功能使用預準備語句,並且使用了類似子句。 Mysql是5.5.32避免PDO中的SQL注入並使用類似子句
當用戶在html表單中爲字段輸入%時,這將轉儲所有表內容。我認爲準備好的語句會處理它,並且執行中有%,以便它與輸入的子串匹配。
如何僅將POST字段用作正常文本,以便它不會導致此類問題?
我正在使用PDO的搜索功能使用預準備語句,並且使用了類似子句。 Mysql是5.5.32避免PDO中的SQL注入並使用類似子句
當用戶在html表單中爲字段輸入%時,這將轉儲所有表內容。我認爲準備好的語句會處理它,並且執行中有%,以便它與輸入的子串匹配。
如何僅將POST字段用作正常文本,以便它不會導致此類問題?
當用戶在html表單中輸入字段的%時,這將轉儲所有表格內容。
是的。這就是LIKE運算符的確切目的。不,這與準備好的陳述無關。後者用於格式化數據,而不會干擾查詢邏輯。
如果你不喜歡你的代碼的工作方式 - 改變它。但目前它的工作方式與您編碼的方式完全一樣,沒有缺陷。
雅我也這麼認爲,但不知道是否有一個更好的方法。 所以現在我使用它是這樣的: \t $ stmt-> execute(addcslashes(array($ _ POST ['field']),「_%」)); –
我看不出這個替代品。雖然它不會造成任何傷害 –
我這樣做,以便如果用戶輸入字段%,它將被轉義。如果沒有改變,完整的表格使用% –
它看起來像你可以用'[%]'替換'%'](http://stackoverflow.com/questions/7191449/how-do-i-escape-a-percentage-sign-in-t -sql),但這看起來像一個黑客。 –
也許這個問題接受的答案可能有助於http://stackoverflow.com/questions/3683746/escaping-mysql-wild-cards – Ma3x
感謝您的鏈接@ Ma3x –