Я использую следующий оператор для вставки данных в mysql с помощью codeigniter.Вставить данные с insert_batch
$this->db->insert_batch($table, $query);
$query
генерируется динамически может иметь различное количество столбцов на каждом элементе массива
и, возможно, количество элементов может отличаться от состояния
array (
0 => array(
'column1'=>'insert1',
'column2'=>'insert2'
),
1 => array(
'column1'=>'insert1';
'column2'=>'insert2',
'column4'=>'insert4'
)
)
это могло привести к ошибке или обрабатывает codigniter от глухоты?
Я построение запроса, как это следует
foreach ($sql_xml as $children) {
$children = $this->xml2array($children);
foreach ($children as $index => $child) {
if ($child != 'feed_id') {
$keys[$index] = $child;
}
}
}
switch (strtolower($this->config[0]->affiliate)) {
case 'case1':
$target_xml = $target_xml->productItems;
break;
case 'case2':
$target_xml = $target_xml;
break;
default :
break;
}
$query = array();
$data = array();
foreach ($target_xml as $feeds) {
$feeds = $this->xml2array($feeds);
$columns = new RecursiveIteratorIterator(new RecursiveArrayIterator($feeds));
foreach ($columns as $index => $column) {
if (array_key_exists($index, $keys)) {
if($column != ''){
$data[$keys[$index]] = $column;
$data['feed_id'] = $this->id;
}
//*TODO //$data['affiliate'] = "'.$this->config[0]->affiliate.'";
}
}
$query[] = $data;
}
if (count($query > 0)) {
foreach ($query as $t){
$this->db->insert($table, $t);
}
}
спасибо за отзыв Я только что сделал тест и посмотрел в источнике, и, как вы говорите, нужно иметь такое же количество «столбцов». Я сделал цикл foreach ($ query as $ t) { $ this-> db-> insert_batch ($ table, array ($ t)); }, но я должен подтвердить жизнеспособность этого запроса. – fefe
Возможно, вы могли бы просто создать цикл построения '$ query' вместо цикла с методом' insert_batch'. Затем просто передайте '$ query' один раз на' insert_batch'. – doitlikejustin