2014-10-31 34 views
-2

我想改變一個字符串的內容(來自用戶的輸入),我想刪除任何字符,這將讓我的查詢失敗。例如,如果我在其中插入第二個帶有「'」的名稱,則查詢將失敗。保護從特殊字符的SQL查詢

因爲我必須從數據庫輸出這些行,所以我想知道是否有任何方法在數據庫中插入字符串,同時用它的HTML值替換特殊字符,這樣當我輸出它時,瀏覽器將完成剩下的工作。

我要離開你一個例子:

$string = $_POST['user_input']; // Let it be Lol'd 
$sql = "INSERT INTO table(field) VALUES('$string')"; 

現在沒有做字符串什麼我能得到的查詢爲:

INSERT INTO表(場)VALUES('Lol'd 「)

我正在尋找的是事情發生了」成'使得它保存Lol'd但DB時,我贊同它,它只會打印Lol'd

回答

-1

試試這個

$string = str_replace("'","\'",$_POST['user_input']); 
$sql = "INSERT INTO table(field) VALUES('$string')"; 
+0

我用這個在以前的工作,但我不知道是否有將任何改變的任何功能HTML中的特殊字符。我認爲我可能會放置一個用戶可能插入的特殊字符。 – Dankorw 2014-10-31 10:27:03

+1

也許不用多說,但只過濾一個'''是不夠的。當然,PHP中有內置的功能來消毒輸入。 – 2014-10-31 10:50:40

1

有很多解決方案。您可以使用函數像htmlentities()

$string = htmlentities($_POST['user_input']); // Let it be Lol'd 
$sql = "INSERT INTO table(field) VALUES('$string')"; 

來讀取你的MySQL表中的字符串,請使用html_entity_decode()