Запуск обновления выбранных записей массива - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть рабочий тестовый скрипт, который делает что-то довольно простое:

Получение 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;

1 Ответ

0 голосов
/ 20 ноября 2018

Подготовьте другой оператор для выполнения обновлений.

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

Обратите внимание, что столбцы для обновления разделяются запятой, а не AND.

Затем внутри цикла вы можете сделать:

$update->execute($orderNumParams);

Кстати, вам не нужно звонить $DB2conn->prepare($getOrderDetails); каждый раз через цикл.Вам нужно подготовить оператор только один раз, а затем выполнить его в цикле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...