使用PHP-PDO-> Prepare Statement将HTML代码插入MySQL数据库

时间:2013-02-11 18:08:39

标签: php html mysql pdo prepared-statement

我有一个问题,我正在尝试将html数据插入到我的数据库中,但是当我插入它时,它会返回带有反斜杠的引号。 (我认为这是一个pdo安全功能......但我怎么能禁用它?)。

PHP + PDO代码是......

if(!empty($_POST['site_ads_right'])) {
  $update1 = $db->prepare("UPDATE ads SET custom_html = :html WHERE position = :pos");
  $update1->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
  $update1->bindValue(':html', $_POST['site_ads_right'], PDO::PARAM_STR);
  $update1->bindValue(':pos', 4, PDO::PARAM_INT);
  $update1->execute();
}

我正在尝试使用名为site_ads_right的html textarea插入此代码($ _POST)

<a href='http://www.example.com/index.php' target='_BLANK'><img src='img/content/a46adedac744f8f98b385ed392f92b3d_lll.jpg'></a>

但是当我插入它时,数据库的返回是......

<a href=\'http://www.example.com/index.php\' target=\'_BLANK\'><img src=\'img/content/a46adedac744f8f98b385ed392f92b3d_lll.jpg\'></a>

我需要插入它而没有放置反斜杠的过滤器......

感谢。

好的,有......

$update1 = $db->query("UPDATE ads SET custom_html = '".$_POST['site_ads_right']."' WHERE position = 4");

插入不带反斜杠的代码。

1 个答案:

答案 0 :(得分:1)

PDO与此无关。它的安全功能完美无瑕。

您自己magic quotesgeneral purpose sanitizing function 只是摆脱他们两个。