1 $table = Nutrient::tableName(); // 表:nutrient, name是唯一索引, 表中的字段在SQL语句中不需要加引号,待插入的值如果有特殊符号可以使用双引号括起来,使用单引号好像不行会冲突因为mysql会自动给value值加上单引号。这里双引号需要转义
2 $sql = "INSERT IGNORE INTO {$table} (name, rl, las, gai, dbz, su, mei, zf, ys, tei, shhf, wsfc, meng, ssxw, wsse, xin, wssa, dgc, tong, lb, jia, ling, shc, la, xi, type) VALUES ";
3 // 待插入的数据有多条,并且可能有的name是数据表已存在的,所以使用ignore关键字。避免数据库报错,导致插入新数据失败。
4 foreach ($dataFromApi['data'] as $k => $v) {
5 // 把 values 的值拼接上,执行一次插入操作,使用model需要多次链接数据库。
6 $sql .= "("{$v['name']}",{$v['rl']},{$v['las']},{$v['gai']},{$v['dbz']},{$v['su']},{$v['mei']},{$v['zf']},{$v['ys']},{$v['tei']},{$v['shhf']},{$v['wsfc']},{$v['meng']},{$v['ssxw']},{$v['wsse']},{$v['xin']},{$v['wssa']},{$v['dgc']},{$v['tong']},{$v['lb']},{$v['jia']},{$v['ling']},{$v['shc']},{$v['la']},{$v['xi']},"{$v['type']}"),";
7 }
8 $sql = rtrim($sql, ',');
9 $insert = Yii::$app->db1->createCommand($sql)->execute();