本文章詳細的以實例和php手冊詳細的介紹了關(guān)于mysql_real_escape_string和addslashes的區(qū)別.
說明:string mysql_real_escape_string(string $unescaped_string[,resource $link_identifier ]).
本函數(shù)將特殊字符轉(zhuǎn)義,并計及連接的當前字符集,因此可以安全用于mysql_query().
Note:mysql_real_escape_string()并不轉(zhuǎn)義.
Example #1 mysql_real_escape_string() 例子,代碼如下:
- <?php
- $item = "Zak’s and Derick’s Laptop";
- $escaped_item = mysql_real_escape_string($item);
- printf ("Escaped string: %sn", $escaped_item);
- ?>
- //以上例子將產(chǎn)生如下輸出:
- //Vevb.com
- Escaped string: Zak’s and Derick’s Laptop
參見:mysql_escape_string() 和 mysql_character_set_name().
網(wǎng)站分享的關(guān)于 addslashes與mysql_real_escape_string的區(qū)別.代碼如下:
- if (!get_magic_quotes_gpc()) {
- $lastname = addslashes($_POST[‘lastname’]);
- } else {
- $lastname = $_POST[‘lastname’];
- }
最好對magic_quotes_gpc已經(jīng)開放的情況下,還是對$_POST[’lastname’]進行檢查一下,再說下mysql_real_escape_string和mysql_escape_string這2個函數(shù)的區(qū)別:
mysql_real_escape_string 必須在(PHP 4 >= 4.3.0, PHP 5)的情況下才能使用,否則只能用 mysql_escape_string,兩者的區(qū)別是:
mysql_real_escape_string 考慮到連接的當前字符集,而mysql_escape_string 不考慮.
手冊上addslashes轉(zhuǎn)義的字符是單引號(')、雙引號(")、反斜線()與NUL(NULL 字符)。
mysql_real_escape_string轉(zhuǎn)義的字符并沒有被提到.只是說了一句.
注意:mysql_real_escape_string() 并不轉(zhuǎn)義% 和_。
為什么PHP手冊沒有說呢?因為其實這是個MySql的C的API.所以我們需要查下MySql手冊..上面是這么說的.
編碼的字符為NUL (ASCII 0)、'n'、'r'、''、'''、'"'、以及Control-Z(請參見9.1節(jié),“文字值”)。(嚴格地講,MySQL僅需要反斜杠和引號字符,用于引用轉(zhuǎn)義查詢中的字符串。該函數(shù)能引用其他字符,從而使得它們在日志文件中具有更好的可讀性)。
總結(jié):
* addslashes() 是強行加;
* mysql_real_escape_string() 會判斷字符集,但是對PHP版本有要求;
* mysql_escape_string不考慮連接的當前字符集。
新聞熱點
疑難解答
圖片精選