0

ID で関連付けられている 2 つのテーブルから行を削除しようとしています。チェックボックスを使用して削除を行っています。チェックされた行はすべて削除されます。

以下のコードは両方のテーブルから削除しますが、2 つの結果を確認すると、テーブル 1 からは 2 つが削除されますが、テーブル 2 からは 1 行しか削除されません。両方のテーブルから複数の行を削除するにはどうすればよいですか? foreach最初のクエリでは機能しましたが、2 番目のクエリでは機能しません。

誰かが私にヒントを与えることができますか?

     <?php
if (isset($_POST['delete'])) {
    if (!empty($_POST['id'])) {

        $id = $_POST['id'];
        $select = $mydb->prepare("select * FROM search where username = ?  and id = ? ");
        echo $mydb->error;
        foreach ($_POST['id'] as $id) {
            $select->bind_param('ss', $username->username, $id);
            $select->execute();
            $data = $select->get_result();
            while ($row = $data->fetch_assoc()) {
                $pdata = $row['productID'];
                if ($row['producttype'] == 'laptop') {
                    $smt = $mydb->prepare("DELETE from search where username = ? and id = ?");
                    echo $mydb->error;
                    foreach ($_POST['id'] as $id) {
                        $smt->bind_param('ss', $username->username, $id);
                        $smt->execute();
                        $smt->close();

                        $smtr = $mydb->prepare("DELETE from laptops where username = ? and id = ?");
                        echo $mydb->error;
                        foreach ($_POST['id'] as $id) {   // foreach was supposed to work but it doesn't work here I don't know why. it works on the first query.
                            $smtr->bind_param('ss', $username->username, $pdata); //$pdata from 1st query == id from second query.
                            $smtr->execute();
                        }
                        $smtr->close();
                    }
                }
            }
        }
    }
    ?>
    <form action="" method="post">
        <input type="submit" name="delete" class="styled-button-8" value="Delete">
    <?php
    $search = $mydb->prepare("select * from search where username = ? order by id");
    $search->bind_param('s', $username->username);
    $search->execute();
    $res = $search->get_result();
    while ($row = $res->fetch_assoc()) {
        ?>
            <input type="checkbox" name="id[]"  class="check" value="<?php echo $row['id'] ?>">
            <?php
            echo $row['title'];
            echo $row['description'];
        }
        ?>
</form>
4

1 に答える 1