如何使用php和mysql将html元素(包括标签)存储在数据库中?

时间:2012-12-08 03:21:07

标签: php mysql html

我有一个带有一些文本的“div”标签和带有标题的“p”标签,我想要存储这些元素及其内容,包括数据库中属于用户的标签。

使用PHP和MySQL将“div”与其内容和“p”与其标题存储的最佳方式是什么?

这与如何用他们的标题存储用户的评论非常相似。

示例:

HTML

<p name="myTitle">This is my title</p>

<div name="myContent">
    This is a paragraph This is a paragraph 
    This is a paragraph This is a paragraph
</div>

请帮忙。

1 个答案:

答案 0 :(得分:4)

步骤1,连接到数据库并告诉它我们正在使用的字符集。

try {
    $db = new PDO('mysql:host=HOSTNAME', 'USERNAME', 'PASSWORD', array(
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    ));
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

第2步,插入你的桌子。

$sql = 'INSERT INTO table_name(p_column, div_column) VALUES(:p, :div)';
try {
    $sh = $db->prepare($sql);
    $sh->execute(array(
        ':p' => $VARIABLE_CONTAINING_P,
        ':div' => $VARIABLE_CONTAINING_DIV,
    ));
} catch (PDOException $e) {
    echo 'Insert failed: ' . $e->getMessage();
}

现在您知道如何将值插入数据库。你会注意到这里没有任何明确的逃脱。有两个原因:

  1. 通过creating a prepared statementbinding parameters at execute time,我们自动防止HTML中的恶意创建SQL injection attack
  2. 您正在存储HTML。没有理由编码或以其他方式破坏您存储在此处的HTML。这是HTML。它的目的是显示为HTML,为什么要销毁它呢?但是,这并不意味着它是安全的 HTML。如果是用户输入的HTML,则可能是恶意的。您应该使用HTML过滤器(例如HTML Purifier)来仅允许 您明确想要的内容。
  3. 希望这个蜿蜒而且影响深远的答案将成为您模糊和不明确问题的解决方案。如果您可以提供有关您要完成的内容的更多详细信息(请参阅:The XY Problem),那么我可以为您提供更多有用的详细信息。