谁能告诉我为什么这不起作用?一切都很好,但是当我点击提交时,它不会更新数据库。
$row = mysql_fetch_array($sql);
$title = $row['title'];
$content = $row['content'];
$author = $row['author'];
$author_email = $row['author_email'];
$cat = $row['category'];
$date = $row['date'];
$id = $row['id'];
$form = "<tr><td>$id
<form action='edit.php' method='post'>
<input type='text' value='$title' name='title'><br>
<textarea name='content'>$content</textarea><br>
<input type='submit' name='submit'>
</td></tr>";
$ptitle = htmlentities($_POST['title']);
$pcontent = htmlentities($_POST['content']);
if($_POST['submit']){
if ($ptitle && $pcontent){
mysql_query("UPDATE blogdata SET id='$id', title='$ptitle', author='$author', author_email='$author_email', date='$date', category='$category', content='$pcontent' WHERE id='$id'");
}
else
echo "A forms empty.";
}
else
echo "$form";
答案 0 :(得分:1)
首先请注意,在未事先验证表单的情况下,您不应使用直接从表单提交的值。我不会在这里解决,但我会解决你的问题:
您无法设置计划在WHERE子句中使用的行标识符的值;这会导致并发问题。您的行标识符应该是不可变的。
因此,您的查询应该如下所示(提醒:我没有修复与安全相关的问题):
UPDATE blogdata SET title='$ptitle', author='$author',
author_email='$author_email', date='$date', category='$category',
content='$pcontent' WHERE id='$id'
答案 1 :(得分:0)
因为编写错误的代码中有错误吗?
您应该使用htmlentities来逃避您正在将写入浏览器的内容。您应该使用mysql_real_escape_string来转义您正在将写入数据库的内容。您的代码应该在其中有注释,解释它的作用。你应该检查mysql_query的返回值,并在适当的时候轮询mysql_error。您不应在SQL中引用数值。