首页 > 解决方案 > 如果新值在数组中,如何批量更新数据库?php

问题描述

我正在尝试为编辑功能的多条记录执行 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();
    }

错误消息:```未捕获的错误:在 C 中调用 null 上的成员函数 prepare():

标签: phpmysqlbulkupdatemultiple-records

解决方案


实验后,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);
        }

推荐阅读