对选定的数组记录运行更新

Posted

技术标签:

【中文标题】对选定的数组记录运行更新【英文标题】:Running update on selected array records 【发布时间】:2018-11-20 19:55:00 【问题描述】:

我有一个工作测试脚本,它正在做一些非常简单的事情:

从一个表中获取一个 order_id 并根据该 order_id 从另一个表中为其选择所有数据。

这行得通,但我有点迷失在最后做其他事情的最佳方式上。

$getOrderNumbers 中的查询是否返回一条或多条记录,while 循环中的以下脚本将执行一条或多条记录,每次成功执行 $getOrderDetails 我想更新我的其他字段STATUS 最初选择的记录表。

所以这是工作脚本:

$getOrderNumbers = "
    SELECT 
        ORDER_ID
    FROM STATUS
    WHERE ORDER_STATUS = 'S'
    AND IS_ACTIVE = 0
";

try 
    $getNumbers = $DB2conn->prepare($getOrderNumbers);
    $ORDNumbers = $getNumbers->execute();
catch(PDOException $ex) 
    echo "QUERY ONE FAILED!: " .$ex->getMessage();


while ($row2 = $getNumbers->fetch(PDO::FETCH_ASSOC)) 

    $orderNumParams = [
        ":ORDER_ID" => $row2["ORDER_ID"],
    ];

    print_r($row2);

    $getOrderDetails = "
        SELECT *
        FROM tableOne
        WHERE  invoice  = :ORDER_ID
    ";

    try 
        $orderDetailCheck = $DB2conn->prepare($getOrderDetails);
        $detailRslt = $orderDetailCheck->execute($orderNumParams);
        $orderDetailCount = $orderDetailCheck->fetch();
        print_r($orderDetailCount);
    catch(PDOException $ex) 
        echo "QUERY ONE FAILED!: " .$ex->getMessage();
    

基本上,当成功为每条记录查询 tableOne 时,我想在 STATUS 上运行更新,如下所示:

UPDATE STATUS
SET IS_ACTIVE = 1
AND DATE_UPDATED = CURRENT_DATE;

我怎样才能做到这一点,以便在每次成功完成后,我可以通过此更新设置我的原始表和记录?

因此,如果我的第一个查询得到 ORDER_ID 123456,那么当我的第二个查询成功时,我基本上会运行:

UPDATE STATUS
SET IS_ACTIVE = 1
AND DATE_UPDATED = CURRENT_DATE
WHERE ORDER_ID = 123456;

【问题讨论】:

为什么不直接加入查询而不是做多个查询? 我会,但我在循环中有一些其他的工作逻辑,我在这里省略了。如果可能的话,我正在尝试基于初始数组中的订单(ORDER_ID)进行多项操作 还涉及到不同的数据库 【参考方案1】:

准备另一个语句来进行更新。

$update = $DB2conn->prepare("
    UPDATE STATUS
    SET ACTIVE = 1, DATE_UPDATED = CURRENT_DATE
    WHERE ORDER_ID = :ORDER_ID");

请注意,要更新的列用逗号分隔,而不是AND

然后你可以在循环内做:

$update->execute($orderNumParams);

顺便说一句,您不需要每次循环都调用$DB2conn->prepare($getOrderDetails);。您只需准备一次语句,然后在循环中执行。

【讨论】:

这很有效,比我想象的要简单得多。谢谢!

以上是关于对选定的数组记录运行更新的主要内容,如果未能解决你的问题,请参考以下文章

对备注字段运行更新查询

选定记录的数据处理和更新

使用 UIPickerView 选定行使用数组数据更新 UIButton 标题

如何访问 Access 中的选定行?

如何使用 Postgres 中 CSV 文件中的值更新选定的行?

使用表单中的组合框中的选定值访问更新表