使用foreach循环更新数据库行

5cg8jx4n  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(388)

我的数据库中有一个表叫做“books\u term”,
当我提交一本书时,书和它的分类存储在这个表中。我的一些书籍有多个类别,所以我决定将每个类别存储为一个新行+图书id
例如:

id             category_id            book_id
 1                   23                 14
 2                   45                 14
 3                   30                 14

这是“books\u term”表结构,如您所见,第14册有三类(23、45、30)
一切正常,直到我决定更新我的cms管理面板的书。
问题是:如何更新这个图书类别?如果图书存在于“图书\术语”中,如何更新图书类别?我应该用吗 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,如下图所示:

2mbi3lxu

2mbi3lxu1#

你可以先删除数据然后再插入

$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';
}

相关问题