2011-06-08 48 views
0

什麼是避免\'的最佳方式,同時我們從PHP post方法獲取值並希望存儲在數據庫中。我只是用,echo $_POST['txtname'];插入時如何解決單引號問題?

它產生的輸出Uncl\'es Jules,如果輸入名稱爲Uncl'es Jules

任何一個可以建議更好的辦法?

+2

如果你有'magic_quotes'啓用,禁用它們 – 2011-06-08 09:54:04

回答

0

這聽起來像你有magic_quotes啓用,這就是爲什麼它自動逃避數據。

  1. 您應該禁用magic_quotesHere是如何可以
  2. mysql_real_escape_string()逃生的數據,同時將他們

如果magic_quotes的不與任何原因,你可以使用stripslashes不去除這些多餘的\禁用。

echo stripslashes($data); 
+0

當使用mysql_real_escape_string()檢索已被轉義的值時,不應該需要去除斜線,它們應該被返回未轉義。如果更新值,只需要記住再次通過mysql_real_escape_string()。 – Brian 2011-06-08 09:59:30

0

這是逃避不安全的字符存儲在數據庫中。你實際上需要你的SQL庫來做到這一點。如果你不這樣做,你可以開放SQL注入,這是不好的。 :)

但它看起來像你有魔術引號啓用。不要使用它並使用mysql_real_escape_string()在將數據插入數據庫之前將其轉義。

當您顯示數據時,您需要做的是revert all escaped characters back

0

嘗試使用mysql_real_escape_string()。

insert into tblTable1 set field1 = mysql_real_escape_string($_POST['txtname']); 

或者mysqli_real_escape_string(),同樣PDO也有匹配的函數。

+0

在附註上,mysql_real_escape_string()及其變體應始終使用。它有助於最大限度地減少惡意SQL注入嘗試 – Brian 2011-06-08 09:55:34