2010-10-10 55 views
1

我有下面這段代碼一些數據帖到數據庫:PHP轉義編碼報價

$post = trim($post); 
$post = htmlentities($post, ENT_QUOTES, null, false); 

$statement = "INSERT INTO table (row) VALUES (:message)"; 
$prepared_posts = $pdo->prepare($statement); 
$prepared_posts->execute(array(':message' => $post)); 

我的MySQL版本5.1.47-community在本地主機都和分期/生產服務器,但我發現了兩個不同的輸出其中。在本地主機上我正在運行PHP 5.3.2,生產服務器有PHP 5.2.14

如果我想發佈一句話that's "ok",在生產上它會保存that\'s \"ok\",localhost會生成正確的that's "ok"

這可能是什麼原因造成的?它可能是一些MySQL設置?我也嘗試使用mysqli而不是PDO,它也做同樣的事情。

回答

1

這些額外的反斜槓可能是Magic Quotes使that's "ok"變得that\'s \"ok\"。嘗試disable them

+0

感謝您的快速解決方案! – 2010-10-10 17:12:19

0

我想magic_quotes_gpcon在生產服務器和本地主機是off

您可以使用ini_set命令進行設置。

+0

事實上,手冊說你不能使用ini_set來設置它,但是有一個解決方法可以在運行時禁用它。 – 2010-10-10 17:13:54