2015-05-22 84 views
0

我已经开始在一些日子之前使用codeigniter,并且必须说它是我发现的一个伟大的框架之一。Codeigniter数组插入到数据库中

目前我遇到的问题是多重插入记录。

有动态生成的记录我需要在表中添加,我已经与循环要做的事,如:

for ($i=0;$i<count($arr);$i++) 
{ 
    // Insert query here 
} 

然而,这种放缓过程,也没有有效的方法,有anythig我可以用于顺利插入?

+0

我认为你应该使用insert_batch .. –

回答

2

你可以做的是使用codeigniter提供的批处理功能。

所以,你可以不喜欢它:

$data = array(
    array(
    'title' => 'My title' , 
    'name' => 'My Name' , 
    'date' => 'My date' 
), 
array(
    'title' => 'Another title' , 
    'name' => 'Another Name' , 
    'date' => 'Another date' 
) 
); 

$this->db->insert_batch('mytable', $data) 

有关更多信息,恳求参考:https://ellislab.com/codeigniter/user-guide/database/active_record.html (这个例子中我已经从这个页面本身添加)

+0

谢谢你这是工作! – Lerry

1

使用此:

$data = array(
    array(
     'title' => 'title_one' , 
     'name' => 'name_one' , 
     'dob' => 'birth_date_one' 
    ), 
    array(
     'title' => 'title_two' , 
     'name' => 'name_two' , 
     'dob' => 'birth_date_two' 
    ) 
); 
$this->db->insert_batch('table_name', $data); 
+0

谢谢你的工作 – Lerry

0

您可以使用自己制作查询并像这样调用它:

$query = $this->db->query($sql); 

// Create sql query 
$sql = 'insert into `table_name` (
      `field_1`, 
      `field_2`, 
      `field_3`, 
      `field_4`, 
     ) 
     values '; 
// Value of each column 
foreach ($arr as $data) {  
    $sql .= "(" 
     . "'" . $data['field_1_name'] . "'," 
     . "'" . $data['field_2_name'] . "'," 
     . "'" . $data['field_3_name'] . "'," 
     . "'" . $data['field_4_name'] . "'," 
    "),"; 
} 
// Query to db 
try { 
    $sql = rtrim($sql, ','); 
    return $this->_model->query($sql); 
} catch (Exception $e) { 
    return false; 
}