谁能帮助我了解为什么此更新查询未更新数据库中的字段?我在我的php页面中有这个来从数据库中检索当前值:
<?php $query = mysql_query ("SELECT * FROM blogEntry WHERE username = 'bobjones' ORDER BY id DESC"); while ($row = mysql_fetch_array ($query)) { $id = $row['id']; $username = $row['username']; $title = $row['title']; $date = $row['date']; $category = $row['category']; $content = $row['content']; ?>
这是我的HTML表单:
<form method="post" action="editblogscript.php"> ID: <input type="text" name="id" value="<?php echo $id; ?>" /><br /> Username: <input type="text" name="username" value="<?php echo $_SESSION['username']; ?>" /><br /> Title: <input type="text" name="udtitle" value="<?php echo $title; ?>"/><br /> Date: <input type="text" name="date" value="<?php echo $date; ?>"/><br /> Message: <textarea name = "udcontent" cols="45" rows="5"><?php echo $content; ?></textarea><br /> <input type= "submit" name = "edit" value="Edit!"> </form>
这是我的“ editblogscript”:
<?php mysql_connect ("localhost", "root", ""); mysql_select_db("blogass"); if (isset($_POST['edit'])) { $id = $_POST['id']; $udtitle = $_POST['udtitle']; $udcontent = $_POST['udcontent']; mysql_query("UPDATE blogEntry SET content = $udcontent, title = $udtitle WHERE id = $id"); } header( 'Location: index.php' ) ; ?>
我不明白为什么它不起作用。
您必须在查询中的所有VARCHAR内容周围加上单引号。因此,您的更新查询应为:
mysql_query("UPDATE blogEntry SET content = '$udcontent', title = '$udtitle' WHERE id = $id");
同样,用POST中的内容直接更新数据库是一种不好的形式。您应该使用mysql_real_escape_string函数清理传入的数据。