php - 如何使用 mysql 查询在 php 中使用嵌套的 foreach 循环

标签 php mysql if-statement foreach

大家好,我正在尝试使用 2 个嵌套的 foreach 循环在表中插入/更新数据... 我有 table -

<强>1。温度

vendor_ID | 组件 | 数量

<强>2。库存

stock_ID | 组件 | 数量

$query2 = "SELECT * FROM sample.temp";
$rslt = $dbo->query($query2);
if($rslt->rowCount() > 0)
{
    foreach($rslt as $item)
    {
        $Qty = $item['Qty'];
        $component = $item['component'];
        $vendor_ID = $item['vendor_ID'];
$query5 = "SELECT * FROM sample.stock";
$reslt = $dbo->query($query5);
if($reslt->rowCount() > 0)
{
    foreach($reslt as $itm)
    {
        $Qty1 = $itm['Qty'];
        $stock_ID = $itm['stock_ID'];
        $component1 = $itm['component'];
        if(($vendor_ID!=$stock_ID && $component!=$component1) || ($vendor_ID!=$stock_ID && $component==$component1) || ($vendor_ID==$stock_ID && $component!=$component1))
        { 
        $query6 = "INSERT INTO sample.stock (stock_ID, component, Qty) VALUES ($vendor_ID, '$component', $Qty)";//inserting new entry
            if ($dbo->query($query6))
            {echo "Data inserted !";}
            else {echo "Production not updated!";}
        }
        else { $query4 = "UPDATE sample.stock SET Qty=(Qty+$Q) WHERE stock_ID=$vendor_ID AND component='$component'";//updating single existing entries
            if ($dbo->query($query4))
            {echo "Production updated !";}
            else {echo "Production not updated!";}}
        }
      }
   }
}

首先,我根据 3 次检查选择一个临时表,从中将数据传输到 stock 表中 -

  1. 如果 stock 表中的现有值与临时表中的 stock_ID 和组件相同,则更新它们

  2. 如果没有与该 stock_ID 对应的组件,则在 stock 表中插入新条目

  3. 如果它具有组件但不对应于库存表中的任何 stock_ID,则在库存表中插入新条目

注意- 临时表中的 vendor_ID 与 stock 表中的 stock_ID 相同。

最佳答案

单个 foreach 会更有用,您不需要嵌套的 foreach 查询。

$sql = "SELECT * FROM sample.temp";
$query = $dbo->prepare($sql);
$query->execute();

$result = $dbo->fetchAll(PDO::FETCH_ASSOC);
if(!empty($result)) {
    foreach($result as $item) {
    $Qty = $item['Qty'];
    $component = $item['component'];
    $vendor_ID = $item['vendor_ID'];

    $sql = "SELECT * FROM sample.stock WHERE stock_ID = :vendor_ID";
    $query = $dbo->prepare($sql);
    $query->bindValue(':temp_stock', $vendor_ID);
    $query->execute();
    $result = $query->fetch(PDO::FETCH_ASSOC);

        if (!empty($result)) {
            $sql = "UPDATE sample.stock SET Qty = (Qty + :Qty) WHERE stock_ID = :vendor_ID AND component= :component";
            $query = $dbo->prepare($sql);
            $query->bindValue(':vendor_ID', $vendor_ID);
            $query->bindValue(':component', $component);
            $query->bindValue(':Qty', $Qty);
            $query->execute();

            if ($query->rowCount > 0) {
            echo "Success: Updated $vendor_ID quantity";
            } else {
            echo "Error: Failed to modify $vendor_ID quantity";
            }

        } else {
            $sql = "INSERT INTO sample.stock (stock_ID, component, Qty) VALUES ($vendor_ID, '$component', $Qty)";
            $query = $dbo->prepare($sql);
            $query->bindValue(':vendor_ID', $vendor_ID);
            $query->bindValue(':component', $component);
            $query->bindValue(':Qty', $Qty);
            $query->execute();

            if ($query) {
            echo "Success: Added $vendor_ID";
            } else {
            echo "Error: Failed to add $vendor_ID";
            }
        }
    }
} else {
echo "No results in temp table";
}`

关于php - 如何使用 mysql 查询在 php 中使用嵌套的 foreach 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34990136/

相关文章:

PHP SQL 服务器 PDOException :could not find driver

php - 下载文件时更新数据库 [PHP]

Java 到 MySQL : How to update row with a value from variable?

php - 合并几个类似的重复 mysql SELECT 语句

php - 我可以在 if 语句中串联函数并返回单个变量吗?

php - 使用多个连接连接查询字符串

javascript - 未捕获的 SyntaxError : Unexpected token < in JSON at position 0 : at JSON. 解析 (<anonymous>) 在 Object.<anonymous>

php - Textarea 破坏 MySQL UPDATE 查询

python - for 循环计数器,报告 1

PHP - 退出 IF block