插入数据表记录到MySQL数据库使用PHP

问题描述:

可能重复:
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

您可能会拥有一个包含所有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

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

  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转储)。