我正在尝试将数百个文本文件中的数据加载到数据库中。
我相信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 />';
}
}
答案 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);
}
?>