1

我正在使用准备好的语句来存储、检索和更新数据库中的数据或从数据库中更新数据。如果我使用准备好的语句,是否需要使用 htmlspecialchars() 或 htmlentities()?

据我了解,插入数据时不需要使用 htmlspecialchars() ,它只涉及输出的 html ......

我有一种情况,我正在使用准备好的语句来存储来自注册表单的用户输入,如下所示:

$stmt = $conn2->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
$stmt->bind_param('sss', $username, $email, $password);
$stmt->execute();

我有另一个脚本在登录并在屏幕上显示他们的用户名时检索用户名和密码,如下所示:

$stmt = $conn2->prepare("SELECT username FROM users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
$stmt->store_result();

if ($stmt->num_rows == 1) {

$stmt->bind_result($name);
$stmt->fetch();

我还将用户名放入 SESSION 并像这样回显会话:

echo $_SESSION['user']['username']

在这个例子中,显示用户名时是否需要使用 htmlspecialchars() 或 htmlentities() ?这是输出HTML的意思吗?

如果是这样,我将在哪里实现 htmlspecialchars() 或 htmlentities()?

4

1 回答 1

4

数据库不关心 HTML。

如果您要将数据插入 HTML 文档,请使用其中之一,并在插入 HTML 文档之前立即执行此操作(而不是在插入数据库之前,您可能出于其他目的再次需要原始数据)。

于 2012-04-11T09:18:22.347 回答