我有以下代码将一些数据发布到数据库中:
$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 ) );
我在localhost和staging / production服务器上都有MySQL版本5.1.47-community
,但我在这两个版本上都得到了不同的输出。在localhost上我正在运行PHP 5.3.2
,生产服务器有PHP 5.2.14
。
如果我正在尝试发布句子that's "ok"
,则在生产时会保存that\'s \"ok\"
,localhost会生成正确的that's "ok"
。
可能导致这种情况的原因是什么?可能是一些MySQL设置?我也尝试使用mysqli
而不是PDO
来做同样的事情。
答案 0 :(得分:1)
这些额外的反斜杠可能是Magic Quotes,因此that's "ok"
变为that\'s \"ok\"
。尝试disable them。
答案 1 :(得分:0)
我认为magic_quotes_gpc
在生产服务器中是on
,在localhost中是off
。
您可以使用ini_set
命令设置它。