gpt4 book ai didi

php - 如果 mysql 数据库中的表中不存在,则更新或插入多条记录

转载 作者:行者123 更新时间:2023-11-29 02:46:51 25 4
gpt4 key购买 nike

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

当点击提交按钮时,创建该按钮是为了使用 php 向表中插入多条记录,可以在 foreach 循环中收集 product_category_ids 的所有数据及其数量。

所以我需要同时插入这些多条记录,并且只应在表中已存在“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);

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

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

关于php - 如果 mysql 数据库中的表中不存在,则更新或插入多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40947913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com