2012-02-20 175 views
0

可能重複:
insert multiple rows via a php array into mysql插入數據表記錄到MySQL數據庫使用PHP

道歉,如果我錯了,我的問題是我有50行 我想一個PHP數據表將這些50行數據插入到MYSQL數據庫中。是否有任何查詢一次插入多行。我使用笨MVC框架

總之,我想Inadvance

+0

爲什麼要同時插入多行? – JJJ 2012-02-20 10:34:13

+0

因爲,我不想循環50次 – 2012-02-20 10:35:08

+0

創建一個轉儲文件,並在新的數據庫中執行它 – 2012-02-20 10:35:11

回答

1

您可能會擁有一個包含所有50個數據的數組。

$data = array(
    array(
     'id' => '1' , 
     'data' => 'data-1' 
    ), 
    array(
     'id' => '2' , 
     'data' => 'data-2' 
    ) 
    ... 
    ... 
    ... 
    array(
     'id' => '50' , 
     'data' => 'data-50' 
    ) 
); 

在您的codeigniter模型類中,您可能會有一個insertBulk函數,例如如下所示。那就是你將上面的數組傳遞給函數。

public function insertBulk($array) { 
    $this->db->insert_batch('datatable', $array); 
} 

// which produces: INSERT INTO datatable (id, data) VALUES ('1', 'data-1'), ('2', 'data-2'), ...('50', 'data-50'); 

我沒有測試過了大陣,但我認爲你可能需要在陣列去太大,檢查出的內存使用情況。

+0

謝謝Jasonw它工作的很好.... – 2012-02-21 06:22:18

+0

@RajneelJoshi謝謝你的驗證。 – Jasonw 2012-02-21 07:16:05

0

Mysql的轉儲是你想要的插入PHP數據表到數據庫

感謝。

下面的鏈接將helpo你出去瞭解你需要做什麼..

MYSQL DUMP

,並通過PHP它可以是這樣的

<?php 

$db = mysql_connect ('localhost', 'username', 'password'); 
mysql_select_db('database', $db); 

$FP = fopen ('backup.sql', 'r'); 
$READ = fread ($FP, filesize ('backup.sql')); 

$READ = explode (";\n", $READ); 

foreach ($READ AS $RED) 
{ 
    mysql_query ($RED); 
} 

echo 'Done'; 
?> 

與更換backup.sql您文件名。 我用它來執行一個phpBB mySQL轉儲到數據庫中。

+0

謝謝,OM永恆 – 2012-02-20 10:55:14

+0

我的寶庫@RajneelJoshi – 2012-02-20 10:59:35

0
  1. 您可以從PHP批量插入到MySQL,你還是要小心批量大小雖然。這是他們在我上面評論中鏈接到的主題中描述的內容。 Per the manual,格式爲:

    INSERT INTO tbl_name(A,B,C)VALUES(1,2,3),(4,5,6),(7,8,9);

  2. 什麼是更好的是如果兩個數據庫都在同一物理機上,如果是那樣的話,你可以做一個跨數據庫INSERT INTO SELECT statement這將消滅任何大的INSERT語句或一個批次的辦法SQL轉儲,因爲數據永遠不會離開MySQL。 (這也應該跨機器工作,但如果是這種情況,最好使用前面提到的PHP或SQL轉儲)。