在無法使用預準備語句的環境中,必須在將使用者輸入提交到 MySQL 之前徹底轉義以防止 SQL 注入。 PHP 的 mysql_real_escape_string 函數通常用於此目的,但它無法轉義 MySQL 通配符「%」和「_」。
為了解決這個問題,可以另外使用 addcslashes。然而,如使用者觀察到的,當包含通配符的輸入傳送到資料庫並檢索時,顯示的結果存在差異。
轉義之謎
使用者遇到了一種奇怪的行為,其中'_' 字元以反斜線('_') 為前綴,而' "' 和"'" 字元則為不是,即使三個字元都用''進行轉義。 LIKE 匹配的上下文,在一般MySQL 使用中不被視為通配符,不應被轉義。解決了此目的的轉義需求。 >
雙重轉義困境
在LIKE 匹配的上下文中,'_' 和'%' 成為特殊字元。 MySQL 使用反斜線('') 作為LIKE 轉義和字串文字轉義步驟的轉義字元。槓轉義。語句使用指定的轉義字元。 >為了增加安全性和可移植性,建議使用準備好的語句可用時的聲明。以上是如何在LIKE語句中正確轉義MySQL通配符?的詳細內容。更多資訊請關注PHP中文網其他相關文章!