2012-03-18 30 views
2

好了,我的PHP頁面,我在逃避這種方式:PHP/MySQL:如何驗證正確轉義的數據?

$title = "Jack's Long 'Shoes'"; 
$title = mysql_real_escape_string($title); 
$go = mysql_query("INSERT INTO titles (title) VALUES '$title'"); 

後來,當我查看通過phpMyAdmin的這個數據,該數據顯示,因爲它是人們逃出之前,即Jack's Long 'Shoes'

我在它看起來像這樣的印象: Jack\s Long \Shoes\

斜槓應該實際上打印在MySQL數據庫字段內?

+1

不,您在查看數據時不會看到斜槓。 – 2012-03-18 06:26:23

回答

4

否。逃生一旦進入數據表就會消失。這就是逃避數據的要點 - 就像在信封中填寫一封信。信件在通過郵政系統的途中停留在信封(逃脫)中。一旦它到達目的地(數據庫存儲介質),它將從信封中刪除並以原始形式存儲。

如果轉義(信封)與字母一起存儲,則每次將信件從數據庫中取出時都必須UNESCAPE(打開信封)。

對於數據庫,轉義用於從查詢解析器「隱藏」SQL元字符。一旦數據通過解析器並寫入數據庫,轉義就不再需要了。數據庫自己的內部處理程序知道什麼是數據和什麼是sql命令,因此在這一點上不再需要由轉義創建的人造分區。

+0

很好的例子謝謝 – Norse 2012-03-18 06:38:06

2

某些字符必須存在,以便可以理解該語句。例如,在PHP中,當你有時,$ var =「有一天,有人說,」你好!\「」;你不希望在輸出字符串中存在\。在SQL中轉義是相同的概念。轉義字符在那裏將特殊字符標記爲文字,而不是實際顯示出來。