0

我已经更新了代码,但不断收到新的错误。我真的希望有人可以帮助我并查看我的代码以查看问题所在。我在网页上有一个数据库表,每个表行都有一个编辑按钮和一个删除按钮。目前我只是想让删除按钮工作,即使我选择了该 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';

?>
4

4 回答 4

2

您忘记关闭操作属性。

您已将echo '<td><form action="index.php method="POST">其更改为

echo '<td><form action="index.php" method="POST">
于 2013-03-08T03:35:48.847 回答
1

需要明确的是:'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'。

于 2013-03-08T03:45:41.400 回答
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";
于 2013-03-08T03:41:25.940 回答
0

尝试更改表单操作

'<td><form action="index.php" method="POST">

还要检查您的数据库连接是否正确建立

也许这可能对 get_post 有所帮助

PHP:get_post 有问题

于 2013-03-08T03:41:30.793 回答