Как массово обновить базу данных, если новые значения находятся в массиве?PHP - PullRequest
1 голос
/ 11 июня 2019

Я пытаюсь сделать оператор UPDATE для нескольких записей для функции редактирования. На странице есть несколько строк, которые необходимо обновить. Я не уверен, как построить оператор, если переданный параметр является массивом.

arr_items[[arr_items2]] </br>
arr_items[[value1, value2, value3, value4], [value1, value2, value3, value4]]

Я пробовал другой bind_param, но он не будет работать.

редактирование-view.php

$dao5->modify($arr_items)

DAO.php

public function modify($arr_items) {
        $sql = 'update table set 
                column3=:???(supposedly value3) 
                column4=:???(supposedly value4) 
                where column1=:???(supposedly value1) and column2=:???(supposedly value2);      

        $values = $arr_items;

        for ($i=0; $i < count($values); $i++){
            $stmt = $conn->prepare($sql);
        }

        $connMgr = new ConnectionManager();           
        $conn = $connMgr->getConnection();

       call_user_func_array(array($stmt, 'bind_param'), $values);

        $stmt->execute();
    }

Сообщение об ошибке: `` `Uncaught Error: вызов функции-члена prepare () в null в C:

1 Ответ

0 голосов
/ 13 июня 2019

после эксперимента sql должен быть таким, как показано ниже, и цикл внутри инструкции для изменения каждой записи.

       $sql = 'update table set column3=:value3, column4=:value4 where column1=:value1 and column2=:value2 ';      

        $values = $arr_items;

        for ($i=0; $i<count($values); $i++){
            $query_p = array(':value3'=> $arr_items[$i][2], ':value4' => $arr_items[$i][3], ':value1' => $arr_items[$i][0], ':value2' => $arr_items[$i][1]);

            $stmt->execute($query_p);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...