萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql_real_escape_string和addslashes的區別

mysql_real_escape_string和addslashes的區別

本文章詳細的以實例和php手冊詳細的介紹了關於mysql_real_escape_string和addslashes的區別。

說明string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )

本函數將 中的特殊字符轉義,並計及連接的當前字符集,因此可以安全用於 mysql_query()。

Note: mysql_real_escape_string() 並不轉義 和 。

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);
?>

以上例子將產生如下輸出:

Escaped string: Zak’s and Derick’s Laptop
參見

mysql_escape_string() 和 mysql_character_set_name()。


網站分享的關於 addslashes與mysql_real_escape_string的區別

 

 代碼如下 復制代碼 if (!get_magic_quotes_gpc()) {
$lastname = addslashes($_POST[‘lastname’]);
} else {
$lastname = $_POST[‘lastname’];
}

最好對magic_quotes_gpc已經開放的情況下,還是對$_POST[’lastname’]進行檢查一下。

再說下mysql_real_escape_string和mysql_escape_string這2個函數的區別:
mysql_real_escape_string 必須在(PHP 4 >= 4.3.0, PHP 5)的情況下才能使用。否則只能用 mysql_escape_string ,兩者的區別是:
mysql_real_escape_string 考慮到連接的當前字符集,而mysql_escape_string 不考慮


手冊上addslashes轉義的字符是單引號(')、雙引號(")、反斜線()與NUL(NULL 字符)。

mysql_real_escape_string轉義的字符並沒有被提到.只是說了一句

注意: mysql_real_escape_string() 並不轉義% 和_。

為什麼PHP手冊沒有說呢?因為其實這是個MySql的C的API.所以我們需要查下MySql手冊..上面是這麼說的.

編碼的字符為NUL (ASCII 0)、'n'、'r'、''、'''、'"'、以及Control-Z(請參見9.1節,“文字值”)。(嚴格地講,MySQL僅需要反斜槓和引號字符,用於引用轉義查詢中的字符串。該函數能引用其他字符,從而使得它們在日志文件中具有更好的可讀性)。


總結:

* addslashes() 是強行加;
* mysql_real_escape_string()  會判斷字符集,但是對PHP版本有要求;
* mysql_escape_string不考慮連接的當前字符集。

copyright © 萬盛學電腦網 all rights reserved