2010-10-27 63 views
2

這裏有一個奇怪的情況。在我的本地mysql數據庫(v5.1.41)上,如果我要處理用戶的引用語法而沒有任何問題,則需要使用此轉義命令。但是我不能在我的web服務器的mysql數據庫(v5.0.91-community)上使用這個命令。如果在Web服務器(apache v2.2.13)上使用此命令,則會在用戶的引用語法中添加一個額外的斜槓語法,因此,如果我刪除了mysql_real_escape_string命令,那麼帶有引號的輸入將不會被插入到數據庫中。Mysql_real_escape_string ...是否有一個自動設置其他地方?

所以我想知道,除了PHP,是否有一個設置內的Apache(V2.2.13)或在MySQL本身,可以自動處理引號語法,如PHP的mysql_real_escape_string命令?

預先感謝您

+1

沒有幫助的詞。舉例。 – 2010-10-27 06:59:56

+0

在'php.ini'中禁用'magic_quotes_gpc' – pltvs 2010-10-27 07:04:39

回答

6

這可能是由於Magic QuotesDisable or remove them,他們是一個好意,但也煩人的功能。

+3

必須死的另一個PHP設置。 – 2010-10-27 07:02:16

+0

@Ignacio Vazquez-Abrams:是的。它已被棄用。 – Gumbo 2010-10-27 08:02:24

2

這意味着在服務器上啓用了php設置magic_quotes_gpc。這是過時,有一種方法來解決它 - 通過在你的代碼的開頭去掉斜線:

<?php 
if (get_magic_quotes_gpc()) { 
    function magicQuotes_awStripslashes(&$value, $key) {$value = stripslashes($value);} 
    $gpc = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); 
    array_walk_recursive($gpc, 'magicQuotes_awStripslashes'); 
} 
+0

通常情況下,最好不要讓PHP搞砸你的數據。 – 2010-10-27 07:28:21

+0

我同意,但有時您無法訪問php.ini。 – Maerlyn 2010-10-27 15:01:31

0

我推薦你使用filter_input讓你的用戶數據,因爲它不關心magic_quotes的和參數化查詢來完成數據庫作業(請參閱mysqliPDO)。

相關問題