更新或插入多个记录(如果不存在于mysql数据库的表中)

乌代亚·库马拉(Udaya kumara)

mysql数据库中有一个名为“ inventory_item”的表。“ id”,“ product_category_id”和“ quantity”是表的列。“ id”是主键,在插入记录时自动生成。

当单击提交按钮时,使用php创建了将多个记录插入到表中的所有记录,product_category_ids的所有数据及其数量可以在foreach循环中收集。

因此,我需要同时插入这些多条记录,并且应该仅在表中已经存在“ product_category_id”而不更新为新记录的情况下更新数量。

代码块在这里。

foreach ($dataArray as $value) {

    $pcid = $value["pcid"];
    $quantity = $value["quantity"];

    $sql = "SELECT * FROM inventory_item WHERE product_category_id='$pcid'";
    $result = $conn->query($sql);
    $row = mysqli_fetch_assoc($result);
    $currentQuantity = $row['quantity'];

    $newQuantity = $quantity + $currentQuantity;

    if ($result == true) {

        $sql2 = "IF EXISTS (SELECT * FROM inventory_item WHERE product_category_id='$pcid') UPDATE inventory_item SET quantity=$newQuantity WHERE product_category_id=’$pcid’ ELSE INSERT INTO inventory_item (product_category_id, quantity) VALUES ('$pcid', '$quantity')";
        $result = $conn->query($sql2);
    } else {
        echo 'error';
    }

}
法比奥
$result = $conn->query($sql);

将始终返回资源,因此这将始终为true,但是您可能需要检查返回的行数。如果没有行,请插入否则进行更新

if(mysqli_num_row($result) == 0) {
    //no rows insert
} else { 
    //row exist do whatever you need
}

或面向对象

if($result->num_rows == 0) {
     //row doesn't exist

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果从数据库获取数据的记录不存在,则需要插入sql

MySQL:如果表中不存在,则插入记录

如果数据存在于mysql数据库中,则使用占位符数据

MySQL创建数据库(如果不存在)

Azure数据库:如果不存在,则创建表

codeigniter:一切正常。仅用于一个表,显示错误“表不存在”。它存在于数据库中,也可以在本地主机上正常工作

如果在选择时不存在在口才数据库中创建记录,

是否有任何SQL查询来检查值是否存在或不存在于数据库表中

插入表或使用MYSQL数据库更新(如果存在)

自动更新或插入(如果不存在)到mysql数据库

如果记录不存在,如何在mysql中插入?

如果该数据不存在于另一个表中,该如何选择该数据?

Cakephp更新多个记录或如果数据库中不存在id则创建一个新记录

应该存在于 pacman 数据库中的包以某种方式不存在

MySQL 查询不存在于另一个表中

检查值是否存在于数据库中或在 Laravel 中不存在

选择存在于数组中但不存在于数据库中的值?

Postgresql数据库在创建后不存在于travis ci中

如果所有值都不存在于一行中,则插入记录

如果特定列中不存在值,则将数据插入数据库

交叉表存在于一个数据库中,而不存在于另一个数据库中

MYSQL | 如果值不存在于同一个表的同一行中,则插入一个值

如何继续处理记录,即使它不存在于表 B 中?

如何插入一个不存在于 MySQL 表中的随机数?

如果不存在则推送文档,如果存在于带有猫鼬的嵌套数组中,则更新

如果表存在于数据库中,则返回视图

Spring boot 运行控制台说表已创建,但该表不存在于数据库中

在所有情况下都允许创建和读取但如果数据不存在于 firebase 实时数据库中,则不允许更新

如果物理层中的所有表都不存在于数据库中,OBIEE RPD 会起作用吗?