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>