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

问题描述:

我有一个问题,我试图插入html数据到我的数据库中,但是当我插入它时,返回带有反斜杠的引号。 (我认为这是一个pdo安全功能......但我怎么能禁用它?)。使用PHP-PDO插入HTML代码到MySQL数据库 - > Prepare Statement

的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为($ _ POST)一个html文本区域

<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> 

,我需要将其插入不使用滤镜是什么放backsl骨灰...

谢谢。

好,与...

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

插入不反斜线的代码。

+0

你需要考虑清理你的数据。在这种情况下,仅使用带有参数化值的预准备语句是不够的。你现在非常容易受到XSS的攻击。 – 2013-02-11 18:15:53

+0

我知道它,但这个代码是针对一个后端网站的,我不需要安全过滤器在这个... – Hangover 2013-02-11 18:21:19

PDO在这里无关紧要。安全功能完美无瑕。

这是你自己的general purpose sanitizing functionmagic quotes
只是摆脱他们两个。