我的代码有什么问题?数据未从数据库中删除


What is wrong with my code? Data is not deleted from database

我已经更新了代码,但不断得到新的错误。我真的希望有人能帮助我,看看我的代码,看看什么是错的。我有一个网页上的数据库表,我有一个编辑按钮和一个删除按钮上的每一个表行。此刻,我只是想让删除按钮工作,它不会删除行在数据库中,即使我选择了那个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

有问题