【发布时间】:2012-10-10 09:05:09
【问题描述】:
使用 PDO 更新数据库时出现错误。 我是 PDO 的新手,所以问题可能很小,我只是不明白。 这个错误的有趣之处在于,该命令运行良好,并且数据库确实得到了更新。 但它仍然向我返回一个错误。
代码:
try {
$stmt = $pdo->prepare("UPDATE $page SET $section = :new_content WHERE $section = '$old_content'");
$stmt->execute(array(
'new_content' => $new_content
));
$result = $stmt->fetchAll();
echo "Database updated!";
}
catch(PDOException $e) {
echo 'ERROR UPDATING CONTENT: ' . $e->getMessage();
}
错误: 错误更新内容:SQLSTATE[HY000]:一般错误
我真的不知道问题可能出在哪里,因为它非常模糊,而且我无法找到有同样问题的人。
【问题讨论】:
-
您很容易受到 SQL 注入的影响,即使您(部分/不正确地)使用准备好的语句和占位符。仅仅因为您是提供插入数据的人并不意味着您不能自己注入。
-
你指的是变量 $page 和 $section 吗?它们都取自 html 元素的固定 ID。所以你是说即使它们也可能有害?
-
$old_content对我来说是一个大红旗。 ANY 进入查询字符串的动态数据可能是有害的。仅仅因为您将其从数据库中取出并不意味着它是安全的。例如考虑像@987654323@ 这样的东西。您转义了新更新的名称,但从数据库中提取了原始名称,现在您已经为自己注入了一个语法错误。 -
嗯,好的。我从来没想过这点。谢谢马克。
-
您正在尝试获取 UPDATE 查询