【发布时间】:2017-10-25 14:34:20
【问题描述】:
我的功能有问题吗?我还创建了一个带有博客页面的简单任务管理器。这与我用来更新 task 表中的任务的函数相同,只是修改为更新 Blog 表。
function update_blog($blogpost) {
global $db;
$sql = "UPDATE Blog SET ";
$sql .= "blog_date='" . db_escape($db, $blogpost['blog_date']) . "', ";
$sql .= "blog_content='" . db_escape($db,
$blogpost['blog_content']) . "' ";
$sql .= "WHERE id='" . db_escape($db, $blogpost['id']) . "' ";
$sql .= "LIMIT 1";
$result = mysqli_query($db, $sql);
if($result) {
return true;
} else {
// UPDATE failed
echo mysqli_error($db);
db_disconnect($db);
exit;
}
}
从edit.php,用户在提交他们的博客文章编辑后被重定向到blog.php。但是,没有看到编辑,并且表本身也没有更新。我在这里遗漏了一些简单的东西吗?
【问题讨论】:
-
检查错误?
-
$result是真是假?正在执行的实际运行时 SQL 查询是什么?当您手动执行该查询时会发生什么? -
在执行之前尝试回显sql并验证它
-
你输出了原始查询吗?看看你想要什么?
-
您对 SQL 注入持开放态度。由于您使用的是 mysqli,因此请利用 prepared statements 和 bind_param。 这将解决可能出现的任何令人讨厌的引用问题,即使使用转义字符串函数
标签: php mysql sql sql-update