我的代码出了什么问题?数据不会从数据库中删除

时间:2013-03-08 03:30:41

标签: php database delete-row

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

答案 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

有帮助

PHP: Having a problem with get_post