对选定的数组记录运行更新
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 标题