php 深入理解addslashes函式

2021-09-29 11:31:56 字數 1036 閱讀 5078

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() 進行檢測

————————

深入理解php核心

第二章 使用者 的執行 第三節 zend引擎與指令碼執行 第四節 小結 第三章 變數及資料型別 第二節 常量 第三節 預定義變數 第四節 靜態變數 第五節 型別提示的實現 第六節 變數的生命週期 第七節 資料型別轉換 第八節 小結 第四章 函式的實現 第二節 函式的定義,引數及返回值 第三節 函式的...

深入理解php核心

第二章 使用者 的執行 第三節 zend引擎與指令碼執行 第四節 小結 第三章 變數及資料型別 第二節 常量 第三節 預定義變數 第四節 靜態變數 第五節 型別提示的實現 第六節 變數的生命週期 第七節 資料型別轉換 第八節 小結 第四章 函式的實現 第二節 函式的定義,引數及返回值 第三節 函式的...

PHP深入理解 PHP架構布局

解析為token 將語法轉換為抽象語法樹 將語法樹轉換opcodes scanning parsing compilation excution 執行opcodes 從上圖中看出主要從解析phpcode到執行主要經過了四個階段.獲取token可以通過token get all 函式獲取token資訊...