$datas = array(
array('id' => 1, 'name' => 'test1'),
array('name' => 'test2', id => 2)
)源代码为:public function insertAll($datas,$options=array(),$replace=false) {
if(!is_array($datas[0])) return false;
$fields = array_keys($datas[0]);
array_walk($fields, array($this, 'parseKey'));
$values = array();
foreach ($datas as $data){
$value = array();
foreach ($data as $key=>$val){
$val = $this->parseValue($val);
if(is_scalar($val)) { // 过滤非标量数据
$value[] = $val;
}
}
$values[] = '('.implode(',', $value).')';
}
$sql = ($replace?'REPLACE':'INSERT').' INTO '.$this->parseTable($options['table']).' ('.implode(',', $fields).') VALUES '.implode(',',$values);
return $this->execute($sql);
}建议修改为: public function insertAll($datas,$options=array(),$replace=false) {
if(!is_array($datas[0])) return false;
$fields = array_keys($datas[0]);
$values = array();
foreach ($datas as $data){
$value = array();
foreach ($fields as $key){
$val = $data[$key];
$val = $this->parseValue($val);
if(is_scalar($val)) { // 过滤非标量数据
$value[] = $val;
}
}
$values[] = '('.implode(',', $value).')';
}
array_walk($fields, array($this, 'parseKey'));
$sql = ($replace?'REPLACE':'INSERT').' INTO '.$this->parseTable($options['table']).' ('.implode(',', $fields).') VALUES '.implode(',',$values);
return $this->execute($sql);
} 最佳答案