我的数据库中有一个表叫做“ books_term”,
当我提交书时,书及其类别存储在此表中。 我的某些书有多个类别,因此我决定将每个类别存储为新行+ book_id
例如:
id category_id book_id
1 23 14
2 45 14
3 30 14
这是“ books_term”表结构,如您所见,第14号书具有三个类别(23、45、30)
一切正常,直到我决定在cms的管理面板中更新这本书。
问题是:如何更新此图书类别?
以及如果该书存在于“ books_term”中,否则如何更新书的类别?
我应该为此目的使用foreach
循环吗?
这是我的php代码,无法正常工作,
$values = $_POST['category'];
$myid = $_POST['bookid'];
foreach($values as $value) {
$check = "SELECT * FROM books_term WHERE book_id = '$myid'";
$checkresult = mysqli_query($connection,$check);
if(mysqli_num_rows($checkresult) > 0){
$update_query = "UPDATE books_term SET category_id = '$value' WHERE book_id = '$myid'";
mysqli_query($connection,$update_query);
echo 'updated';
}else{
$insert_query = "INSERT INTO books_term (category_id,book_id) VALUES ('$value','$myid')";
mysqli_query($connection,$insert_query);
echo 'inserted';
}
}
在编辑页面中,当我选择多个类别并单击“更新”按钮时,它将刚刚选择的最后一个类别设置为book_id 14,如下图所示:
答案 0 :(得分:0)
您可以先删除数据,然后再次插入
$values = $_POST['category'];
$myid = $_POST['bookid'];
$delete_query = "DELETE FROM books_terms WHERE book_id='$myid'";
mysqli_query($connection,$delete_query);
foreach($values as $value) {
$insert_query = "INSERT INTO books_term (category_id,book_id) VALUES ('$value','$myid')";
mysqli_query($connection,$insert_query);
echo 'inserted';
}