我有一个带有一些文本的“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 步,连接到数据库并告诉它我们正在使用的字符集。
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();
}
现在您知道如何将值插入数据库。您会注意到这里没有任何内容被明确转义。有两个原因:
- 作者 creating a prepared statement和 binding parameters at execute time ,我们自动防止 HTML 中的恶意内容创建 SQL injection attack .
- 您正在存储 HTML。没有理由对您存储在此处的 HTML 进行编码或以其他方式破坏。它是 HTML。它旨在显示为 HTML,那么为什么要破坏它呢?但是,这并不意味着它是安全 HTML。如果是用户输入的 HTML,则可能是恶意的。您应该使用 HTML 过滤器,例如 HTML Purifier 仅您明确想要的内容。
希望这个曲折而牵强的答案将接近成为您模糊和未指定问题的解决方案。如果您可以提供有关您要完成的确切内容的更多详细信息(请参阅:The XY Problem),那么我可以为您提供更多有用的详细信息。