【问题标题】:How to bulk update database if the new values are in array? php如果新值在数组中,如何批量更新数据库? php
【发布时间】:2019-06-11 09:12:33
【问题描述】:

我正在尝试为编辑功能的多条记录执行 UPDATE 语句。该页面有多行需要更新。如果传递的参数是数组,我不知道如何构造语句。

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

我也尝试了不同的 bind_param,但它不起作用。

edit-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 准备():

【问题讨论】:

    标签: php mysql bulkupdate multiple-records


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多