什麼是避免\'
的最佳方式,同時我們從PHP post方法獲取值並希望存儲在數據庫中。我只是用,echo $_POST['txtname'];
插入時如何解決單引號問題?
它產生的輸出Uncl\'es Jules
,如果輸入名稱爲Uncl'es Jules
任何一個可以建議更好的辦法?
什麼是避免\'
的最佳方式,同時我們從PHP post方法獲取值並希望存儲在數據庫中。我只是用,echo $_POST['txtname'];
插入時如何解決單引號問題?
它產生的輸出Uncl\'es Jules
,如果輸入名稱爲Uncl'es Jules
任何一個可以建議更好的辦法?
這聽起來像你有magic_quotes啓用,這就是爲什麼它自動逃避數據。
magic_quotes
。 Here是如何可以如果magic_quotes的不與任何原因,你可以使用stripslashes不去除這些多餘的\
禁用。
echo stripslashes($data);
當使用mysql_real_escape_string()檢索已被轉義的值時,不應該需要去除斜線,它們應該被返回未轉義。如果更新值,只需要記住再次通過mysql_real_escape_string()。 – Brian 2011-06-08 09:59:30
這是逃避不安全的字符存儲在數據庫中。你實際上需要你的SQL庫來做到這一點。如果你不這樣做,你可以開放SQL注入,這是不好的。 :)
但它看起來像你有魔術引號啓用。不要使用它並使用mysql_real_escape_string()在將數據插入數據庫之前將其轉義。
當您顯示數據時,您需要做的是revert all escaped characters back。
http://php.net/manual/en/function.mysql-real-escape-string.php
使用mysql_real_escape_string
我試過了,但它放了\'並顯示??? – logudotcom 2011-06-08 10:03:32
嘗試使用mysql_real_escape_string()。
insert into tblTable1 set field1 = mysql_real_escape_string($_POST['txtname']);
或者mysqli_real_escape_string(),同樣PDO也有匹配的函數。
在附註上,mysql_real_escape_string()及其變體應始終使用。它有助於最大限度地減少惡意SQL注入嘗試 – Brian 2011-06-08 09:55:34
如果你有'magic_quotes'啓用,禁用它們 – 2011-06-08 09:54:04