使用PHP将数据表记录插入MYSQL数据库

时间:2012-02-20 10:31:40

标签: php codeigniter

  

可能重复:
  insert multiple rows via a php array into mysql

道歉,如果我错了,我的问题是我有一个带有50行的PHP数据表 我想将这些50行数据插入到MYSQL数据库中。是否有任何查询一次插入多行。我正在使用codeigniter MVC框架

简而言之,我想将PHP数据表插入数据库

感谢Inadvance

3 个答案:

答案 0 :(得分: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');

我没有测试过大型数组,但我认为如果数组太大,我可能需要查看内存使用情况。

答案 1 :(得分:0)

Mysql转储是你想要的。

以下链接将帮助您了解您需要做什么..

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转储到数据库中。

答案 2 :(得分: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. 更好的是,如果2个数据库位于同一个物理机器上,如果是这种情况,您可以执行跨数据库INSERT INTO SELECT statement,这将消灭任何大型INSERT语句或批处理使用SQL转储的方法,因为数据永远不会离开MySQL。 (这应该也适用于跨机器,但如果是这种情况,最好使用PHP或之前建议的SQL转储。)