php addslashes函數對於很多人來說並不陌生,但很大部分人只是瞭解皮毛,只知道addslashes函數是在特定字符前面加上反斜槓,本文章將帶大家深入理解php addslashes函數的使用方法。
php addslashes函數的作用是在預定義的字符前面加上反斜槓,這些預定義字符包括:
單引號(')
雙引號(")
反斜槓(\)
NULL
addslashes函數經常使用在向數據庫插入數據時,比如有一個字符串
$str="my name's wxp";
現在要將這個字符串插入到數據庫表中,由於該字符串有單引號',這樣很可能與mysql拼接字符串的單引號'衝突,導致SQL語句不正確,也就無法正常執行插入操作,此時我們需要使用addslashes函數處理這個字符串。如:
$str="my name's wxp";
echo addslashes($str);//輸出my name\'s wxp
然後在拼接mysql字符串:
$sql="insert into student(student_name)values('".addslashes($str)."')";
mysql_query($sql);
此時字符串被插入到數據庫,那麼大家是否知道插入的字符串是帶反斜槓還是不帶反斜槓呢?恐怕很多人都會認爲肯定是帶反斜槓的字符串。其實這個答案是錯誤的,插入的字符串是沒有帶反斜槓。至於爲什麼插入的字符串在數據庫中是沒有加反斜槓,請大家繼續看下面講解。
如果字符串$str="my name's wxp"是使用POST和GET提交的數據,這個時候插入數據庫中的數據是帶反斜槓的,由此可知addslashes只是在POST和GET數據插入數據庫時纔會把反斜槓同時插入到數據庫,其他情況下不會將反斜槓插入到數據庫。
註釋:默認地,PHP 對所有的 GET、POST 和 COOKIE 數據自動運行 addslashes()。所以您不應對已轉義過的字符串使用 addslashes(),因爲這樣會導致雙層轉義。遇到這種情況時可以使用函數 get_magic_quotes_gpc() 進行檢測
————————
根據上一篇文章可知,其實 get_magic_quotes_gpc函數已經廢棄了!
————————