2015-05-22 179 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; 
} 
相關問題