在许多人告诉我之后,我正在学习PDO。但是,在更新我的一个脚本时,PDO会导致我出现一个我不确定如何修复的问题。
我的问题是用户会将标题输入网站。说它的“史密斯的库存”。
自整个PDO切换后,它将作为“Smith \'s Inventory”保存在数据库中。哪个在我的网站上的各个地方输出。例如标题,html标题和设置文本框。如果再次使用\'单击“保存”,则会获得\\',依此类推。
我意识到为什么要这样做,但如何解决呢?
这是instert代码:
foreach ($_POST as $key => $value)
{
$sql = $dbh->prepare("UPDATE settings set value=? where variable=?");
$sql->bindParam(1, $value);
$sql->bindParam(2, $key);
$sql->execute();
}
echo '<h2><font color=green>Saved</font></h2>';
答案 0 :(得分:3)
看起来你是双重逃避数据。
最可能的原因是:
答案 1 :(得分:2)
之前我遇到过这个问题,这是由于PHP魔术引用。 PHP会自动插入斜杠来转义'冒险'字符,以防止sql注入。
你需要在php安装上禁用魔术引号或在输出之前使用stripstashes功能。
http://php.net/manual/en/security.magicquotes.disabling.php
http://php.net/manual/en/function.stripslashes.php
你可以在这里阅读魔术引语:
http://www.tizag.com/phpT/php-magic-quotes.php
答案 2 :(得分:1)
您可以在PHP端使用stripslashes
。
<?php
$str = "Is your name O\'reilly?";
// Outputs: Is your name O'reilly?
echo stripslashes($str);
?>