使用foreach循环更新数据库行

时间:2018-06-27 18:30:24

标签: php mysql database loops foreach

我的数据库中有一个表叫做“ 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,如下图所示:

enter image description here

1 个答案:

答案 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';
}