最有可能的問題是,您在一臺服務器上啓用了magic_quotes,但沒有啓用另一臺服務器上的magic_quotes。 或者禁用magic_quotes的或變化的代碼:如果你有2個連接2個不同的數據庫服務器
mysql_real_escape_string
根據已打開的連接工程不同,可能會出現
$example = stripslashes($_POST['example']); //undoes the magic_quotes
$escaped_string = mysql_real_escape_string($example); //escapes it properly.
一個不太可能的情況。
如果您有多個服務器並因此有多個連接,則每個連接需要運行一次轉義功能。
例
$example = "a'b";
$connectionA = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$connectionB = mysql_connect('remotehost', 'mysql_user', 'mysql_password');
$escapedstringA = mysql_real_escape_string($example, $connectionA);
$escapedstringB = mysql_real_escape_string($example, $connectionB);
如果你離開了連接參數在調用mysql_real_escape_string
兩個escapedstrings會使用遠程主機的默認編碼,這是不正確轉義。
此代碼可能不正確工作:
$example = "a'b";
$connectionA = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$connectionB = mysql_connect('remotehost', 'mysql_user', 'mysql_password');
$escapedstringA = mysql_real_escape_string($example); //uses remotehost's encoding
$escapedstringB = mysql_real_escape_string($example);
但magic_quotes在服務器上關閉而另一個關閉? –