簡體   English   中英

如何防止撇號被刪除PHP MySQL

[英]How to prevent apostrophe from being removed PHP MySQL

我有一個注冊系統,要求用戶名。 有些人的姓氏中帶有撇號,這會阻止將數據寫入MySQL數據庫表(例如O'Hare)。

我正在使用mysql_real_escape_string從字符串中刪除撇號。 除非我需要對Web Service使用帶撇號的值,否則就可以了,否則Web Service將返回false。

我以為我可以在使用mysql_real_escape_string之前先通過Web服務進行名稱檢查,但這會帶來安全缺陷嗎? 還是SOAP Web服務已經進行了自己的干凈輸入檢查?

還是有更好的方法來傳遞變量,從而使PHP保留撇號但仍保持其安全性,而MySQL可以接受它呢?

您應該向我們展示一些代碼,因為mysql_real_escape_string不會刪除撇號,而只會對其進行轉義。
轉義表示O'Hare將變為O\\'Hare以便可以將其作為字符串插入: 'O\\'Hare' 從數據庫檢索后,您的值仍應為原始的O'Hare

因此,如果撇號“丟失”,則程序邏輯中的其他地方可能會出現錯誤。

另一個選擇是從使用MySQL庫切換到使用MySQLi或PDO庫訪問數據庫。 后兩個支持准備好的聲明。 通常,將准備好的語句視為查詢數據庫的最佳實踐。

mysql_real_escape_string()不會刪除撇號。

您的問題很可能在輸出端,或某些其他功能與輸入混亂。

在使用mysql_real_escape_string之前,您需要打開數據庫連接,否則它將發生故障。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM