php批量更新mysql中的數據


php批量修改數據到mysql數據庫中:

public function doBatchModify($data=[],$table='user'){
        $userModel = new \Common\Model\UserModel();
        $data = array(
            9 =>  array('name'=>'張三','password'=>1,'true_name'=>'張三'),
            10 => array('name'=>'李四','password'=>2,'true_name'=>'李四'),
            14 => array('name'=>'王五','password'=>3,'true_name'=>'王五'),
            15 => array('name'=>'趙六','password'=>4,'true_name'=>'趙六'),
            16 => array('name'=>'錢七','password'=>5,'true_name'=>'錢七'),
            17 => array('name'=>'孫八','password'=>6,'true_name'=>'孫八')
        );
        if(count($data)==0 || empty($table)) exit('參數缺少');
        //獲取所有的id
        $data_keys = array_keys($data);

        $col = $userModel->query("SHOW COLUMNS FROM `user`");
        $cols = [];
        array_map(function($value) use(&$cols){
            $cols[] = $value['field'];
        },$col);
        //拼接批量更新sql語句
        $sql = "UPDATE {$table} SET ";
        //合成sql語句
        foreach ($data[$data_keys[0]] as $key => $value) {
            if(!in_array($key,$cols)) continue;
            $sql .= "{$key} = CASE id ";
            foreach ($data as $k=>$v) {
                $sql .= sprintf("WHEN %d THEN '%s' ", $k, $v[$key]);
            }
            $sql .= "END, ";
        }
        //把最后一個,去掉
        $sql = substr($sql, 0, strrpos($sql,','));

        //合並所有id
        $ids = implode(',', $data_keys);
        //拼接sql
        $sql .= " WHERE id IN ({$ids})";
        dump($userModel->execute($sql));
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM