我已经更新了代码,但不断得到新的错误。我真的希望有人能帮助我,看看我的代码,看看什么是错的。我有一个网页上的数据库表,我有一个编辑按钮和一个删除按钮上的每一个表行。此刻,我只是想让删除按钮工作,它不会删除行在数据库中,即使我选择了那个ID。看起来它识别出了正确的身份。
有人能告诉我怎么了吗?下面是代码…
<?php
require 'connect.inc.php';
if (isset($_POST['delete']) && isset($_POST['id'])) {
$id = get_post('id');
$query = "DELETE FROM movies WHERE id='.$id.' LIMIT 1";
if (!mysql_query($query, $db_server))
echo "DELETE failed: $query<br>".
mysql_error() . "<br><br>";
}
$query = "SELECT * FROM movies, categories WHERE movies.genre_id = categories.genre_id";
$result = mysql_query($query);
if (!$result) die ("Database access failed:" .mysql_error()) ;
$rows = mysql_num_rows($result);
echo '<table><tr><th>Title</th><th>Release year</th><th>Genre</th><th>Director</th><th>Update</th><th>Delete</th></tr>';
for ($j = 0 ; $j < $rows ; ++$j) {
$row = mysql_fetch_row($result);
//$id = $row[0];
echo '<tr><td>' .$row[1] . '</td>' ;
echo '<td>' .$row[2] . '</td>' ;
echo '<td>' .$row[3] . '</td>' ;
echo '<td>' .$row[4] . '</td>' ;
echo '<td>'."<a href='edit_movie.php?edit=" . $row[0] . "'>Edit</a>".'</td>';
echo '<td><form action="index.php" method="POST">
<input type="hidden" name="delete" value="yes" />
<input type="hidden" name="id" value="'. $row[0] .'" />
<input type="submit" value="Delete" /></form>
</td></tr>' ;
}
echo '</table>';
include 'add_movie.php';
?>
忘记关闭动作属性
将echo '<td><form action="index.php method="POST">
改为
echo '<td><form action="index.php" method="POST">
只是为了明确:'mysql_query'和伴随的命令已被弃用,不应该真正使用。然而,OP声明它是赋值所必需的。替换它们最简单的方法是使用'mysqli_*'代替。使用参数绑定来避免sql注入的例子:http://www.php.net/manual/en/mysqli-stmt.bind-param.php
应该是:
if (isset($_POST['delete']) && isset($_POST['id'])) {
$id = mysql_real_escape_string($_POST['id']);
...
查看此链接获取有关'get_post'的一些信息:PHP: get_post
有问题问题是函数'get_post'是在课程文献的下一页定义的,而提问者没有注意到。
变量$_POST['id']包含通过HTTP post请求从表单发送的id值。你检查这个值是否设置了,然后你应该像我写的那样把它赋值给'$id'。
你的delete sql有错误的引号
$query = "DELETE FROM movies WHERE id='.$id.' LIMIT 1";
改为
$query = "DELETE FROM movies WHERE id=".$id." LIMIT 1";
或
$query = "DELETE FROM movies WHERE id=$id LIMIT 1";
尝试改变表单动作
'<td><form action="index.php" method="POST">
还要检查数据库连接是否正确建立
也许这对get_post
有帮助PHP: get_post