0

我有一个带有一些文本的“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>

请帮忙。

4

1 回答 1

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. 通过在执行时创建准备好的语句绑定参数,我们自动防止 HTML 中的恶意软件创建SQL 注入攻击
  2. 您正在存储 HTML。没有理由对您在此处存储的 HTML 进行编码或以其他方式破坏。它是 HTML。它的目的是显示为 HTML,那么为什么要销毁它呢?但是,这并不意味着它是安全的HTML。如果是用户输入的 HTML,则可能是恶意的。您应该使用 HTML 过滤器,例如HTML Purifier ,允许您明确想要的内容。

希望这个曲折而过分的答案将接近成为您模糊和未指定问题的解决方案。如果您可以提供更多关于您正在尝试完成的任务的详细信息(请参阅:XY 问题),那么我可以为您提供更多有用的详细信息。

于 2012-12-08T04:03:49.187 回答