使用PHP&插入行组。 MYSQL

时间:2009-11-28 08:01:55

标签: php mysql

我正在尝试将数百个文本文件中的数据加载到数据库中。

我相信MYSQL在没有插入所有行的情况下退出循环。

任何人都可以建议如何使用PHP代码在数据末尾插入1000行的块?

$filenames_array = array();

foreach($filenames_array as $filename)
{

        $file_array     = file($filename);
        $file_value     = $file_array[0];
        $new_array  = explode(",", $file_value);
        $length         = count($new_array);


        for($i = 0; $i < $length; $i++)
        {

        $sql = "INSERT INTO `names`
            (`id`, `name`)   

            VALUES 
            ('',
            '" . $new_array[$i] . "'
            )";

        $result = mysql_query($sql) or die(mysql_error());
        echo $i . 'Row Inserted<br />';
        }

    }

3 个答案:

答案 0 :(得分:0)

你可能试图在一个查询中运行太多的INSERT语句。

查看PDO并准备好语句或使用如下SQL语法:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

答案 1 :(得分:0)

您尝试插入的某个条目是否可能包含单引号'?在这种情况下,会发生错误并且循环不会完成。

您应该始终使用mysql_real_escape_string转义插入数据库的值,以防止出现类似问题,并确保您不会受到sql injection的攻击。<​​/ p>

    $sql = "INSERT INTO `names`
            (`id`, `name`)   

            VALUES 
            ('',
            '" . mysql_real_escape_string($new_array[$i]) . "'
            )";

答案 2 :(得分:0)

为什么不将每个txt文件合并为一个大文本文件,并逐行读取?请参阅此处的示例http://php.net/manual/en/function.fgets.php

主要是:

<?php
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        echo $buffer;
    }
    fclose($handle);
}
?>