使用PHP插入行组(&;MYSQL
我正在尝试将几百个文本文件中的数据加载到数据库中 我相信MYSQL正在退出循环,而没有插入所有行 有人能建议如何使用PHP代码在数据末尾插入1000行的块吗使用PHP插入行组(&;MYSQL,php,mysql,Php,Mysql,我正在尝试将几百个文本文件中的数据加载到数据库中 我相信MYSQL正在退出循环,而没有插入所有行 有人能建议如何使用PHP代码在数据末尾插入1000行的块吗 $filenames_array = array(); foreach($filenames_array as $filename) { $file_array = file($filename); $file_value = $file_array[0]; $new_ar
$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 />';
}
}
$filenames\u array=array();
foreach($filenames\u数组作为$filename)
{
$file\u array=文件($filename);
$file_value=$file_数组[0];
$new\u数组=分解(“,”,$file\u值);
$length=计数($new_数组);
对于($i=0;$i<$length;$i++)
{
$sql=“插入到`名称中”`
(`id`、`name`)
价值观
('',
“$new_数组[$i]”
)";
$result=mysql\u query($sql)或die(mysql\u error());
回显$i。'插入的行
';
}
}
您可能试图在一个查询中运行过多的INSERT语句
查看并准备语句,或使用如下SQL语法:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
您试图插入的条目之一是否可能包含一个引号'?在这种情况下,将发生错误,循环将无法完成 您应该始终使用mysql\u real\u escape\u字符串对插入到数据库中的值进行转义,以防止出现类似的问题,并确保不会受到攻击
为什么不把每个txt文件合并成一个大的文本文件,逐行读取呢?请参见此处的示例 主要是:
<?php
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}
?>
如果他处理的是几百个文本文件,我不认为多重插入语法是一个可行的解决方案?他并不是真的在一个查询中发送许多插入-总是一次只发送一个插入使用一个查询插入多行比使用多个查询快,因此如果他的脚本超时,重写它以在一个查询中插入1000行可能会有所帮助。$filenames\u数组在哪里初始化?哪个循环提前终止?for循环?为什么您确定for循环提前终止?当它终止时,是否死亡(mysql_error());语句给你任何输出?若然,原因为何?“到数据末尾的1000行块”是什么意思?你的意思是一次向现有的MySQL表中添加1000个条目吗?我没有花时间键入文件名数组。它是所有文件名的数组。我认为问题在于mysql。我之所以这样说,是因为使用phpmyadmin导出SQL会将插入分解为1500行的块。我要求做一些类似的事情。数据不包含单引号。我想这是MYSQL的问题。我有几百个文本文件。复制和粘贴所有信息违背了编写此代码的目的。MYSQL也在大约1100行插入之后退出。我需要插入大约6000行。通过将所有内容合并到一个文本文件中,我的意思不是复制和粘贴。也许您可以将所有文件的列表读取到一个数组中,使用file\u get\u contents和file\u put\u contents复制每个文件的内容,并自动完成所有操作!:)
<?php
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}
?>