當我在本地MAMP設置中使用mysql_real_escape_string時,它工作正常。當我在文本字段中輸入「test」時出現「test」。mysql_real_escape在本地但不是遠程工作
當我將它發佈到遠程服務器時,它似乎沒有逃避字符串。 「測試」在數據庫中顯示爲「測試」。
我已經確認在轉義之前打開了一個連接。
示例代碼:
global $db,$db_table_prefix;
mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$title = mysql_real_escape_string($_POST['title']);
$content = mysql_real_escape_string($_POST['content']);
它節省精細到正確的數據庫並沒有什麼,但似乎並不被添加\'s。
它應該出現在DB「測試」中,\是轉義輸入,並且不保存。聽起來像本地版本是錯誤的。 – 2012-08-30 20:16:42
你確定,設置了正確的編碼嗎?另外,這就是應該出現在數據庫中的,不是嗎?它'通過''測試',但寫''測試''。 – ATaylor
它可能無助於回答你的問題,但你應該停止使用'mysql_ *'函數。他們正在被棄用。請使用[PDO](http://php.net/manual/en/book.pdo.php)(自PHP 5.1起支持)或[mysqli](http://php.net/manual/en/book)。 mysqli.php)(自PHP 4.1起支持)。如果您不確定要使用哪一個,請閱讀本文(http://www.deprecatedphp.com/mysql_/)。 – Matt