我已更新代码但不断收到新错误。 我真的希望有人可以帮助我,看看我的代码,看看有什么问题。 我在网页上有一个数据库表,每个表行都有一个编辑按钮和一个删除按钮。目前我只是想让删除按钮工作,即使我选择了该ID,它也不会删除数据库中的行。看起来它正在拿起正确的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';
?>
答案 0 :(得分:2)
您忘了关闭操作属性。
您echo '<td><form action="index.php method="POST">
将其更改为
echo '<td><form action="index.php" method="POST">
答案 1 :(得分:1)
为了清楚起见:'mysql_query'和附带的命令已被弃用,并且实际上不应该使用。 OP表示它是分配所必需的。替换它们的最简单方法是使用'mysqli_ *'代替。有关使用参数绑定以避免sql-injection的示例: 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: Having a problem with get_post
问题是“get_post”函数是在课程文献的下一页定义的,提问者没有注意到。
变量$ _POST ['id']包含通过HTTP POST请求从表单发送的id-value。你检查是否设置了这个值,然后你应该像我写的那样将它分配给'$ id'。
答案 2 :(得分:0)
你的删除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";
答案 3 :(得分:0)
尝试更改表单操作
'<td><form action="index.php" method="POST">
同时检查您的数据库连接是否已正确建立
也许这对get_post
有帮助