第 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();
}
现在您知道如何将值插入数据库。你会注意到这里没有任何东西被明确地逃脱。有两个原因:
- 通过在执行时创建准备好的语句和绑定参数,我们自动防止 HTML 中的恶意软件创建SQL 注入攻击。
- 您正在存储 HTML。没有理由对您在此处存储的 HTML 进行编码或以其他方式破坏。它是 HTML。它的目的是显示为 HTML,那么为什么要销毁它呢?但是,这并不意味着它是安全的HTML。如果是用户输入的 HTML,则可能是恶意的。您应该使用 HTML 过滤器,例如HTML Purifier ,只允许您明确想要的内容。
希望这个曲折而过分的答案将接近成为您模糊和未指定问题的解决方案。如果您可以提供更多关于您正在尝试完成的任务的详细信息(请参阅:XY 问题),那么我可以为您提供更多有用的详细信息。