0

コードを更新しましたが、新しいエラーが発生し続けます。誰かが私を助けてくれて、私のコードを見て何が悪いのかを見てくれることを本当に望んでいます。Webページにデータベーステーブルがあり、各テーブル行に1つの編集ボタンと1つの削除ボタンがあります。現時点では、削除ボタンを機能させようとしていますが、その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-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:get_postに問題があります

問題は、関数'get_post'がコース資料の次のページで定義されていて、質問者が気づかなかったことです。

変数$_POST['id']には、HTTPPOSTリクエストを介してフォームから送信された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 に答える