Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql中csv批量插入的限制_Php_Mysql_Csv - Fatal编程技术网

Php mysql中csv批量插入的限制

Php mysql中csv批量插入的限制,php,mysql,csv,Php,Mysql,Csv,我有一个csv文件上传功能。如果csv有近30000行,则功能正常。但每当csv文件的行数超过30k时,大容量插入就不起作用。下面是我读取csv并插入到表中的代码 $csvfile = fopen($file, 'r'); $i = 0; $data4 = ""; while (!feof($csvfile)) { $csv_data[] = fgets($csvfile, 1024); $csv_array = explode(";", $csv_data[$i]);

我有一个csv文件上传功能。如果csv有近30000行,则功能正常。但每当csv文件的行数超过30k时,大容量插入就不起作用。下面是我读取csv并插入到表中的代码

$csvfile = fopen($file, 'r');
$i = 0;
$data4 = "";
while (!feof($csvfile))
{
    $csv_data[] = fgets($csvfile, 1024);
    $csv_array = explode(";", $csv_data[$i]);
    $data4.= "('".$csv_array[2]."', '".$csv_array[4]."', '".$csv_array[0]."','".$csv_array[1]."'),";  
}
$i++;
fclose($csvfile);
$data4 = substr($data4,0,-1);
$sql = "INSERT INTO csv_table(`column1`,`column2`,`column3`,`column4`) VALUES $data4"; 
mysqli_query($mysqliConn,$sql);
只有当我的记录超过30000条时,我才有问题。请建议我在这里换车。 提前感谢

专业提示:当然,“不工作”可能意味着“我的服务器起火,我的数据中心被烧毁”到“我的所有值都更改为
42
,”再到“操作没有影响”。请理解您的错误。检查像
mysqli\u query()
这样的操作返回的错误

话虽如此

您正在将整个CSV文件的内容拼凑成一个文本字符串。当csv文件太长时,该方法可能会失效

MySQL查询的长度有一个限制。它很大,但不是无限的,它由服务器参数和服务器配置设置。读这个

php也可能会耗尽内存

如何修复?处理你的CSV文件不是一次处理完,而是分成50行左右。一旦你读了50行,做一个插入

Pro提示2:清理输入数据。如果有人在上传的CSV文件中放入这样一行,您的表会发生什么情况

"bwahahahaha!'; -- DROP TABLE csv_table;", "something", "somethingelse"
你可能没事。但是你想冒这样的风险吗


请注意,公共网络上到处都是网络罪犯,如果你让它运行,几天后就会有人发现并利用这种漏洞。

尝试检查错误,例如查找。除此之外,我们还需要知道它是如何工作的。我在这里使用jquery文件上传,只是我得到了内部服务器错误500A 500错误是一个通用的错误消息,几乎涵盖了脚本中可能出现错误的每一件事。请查看服务器错误日志以了解确切的错误消息。一个内部系统将生成此csv,因此不会发生这种情况。恕我直言,这将是@user3408779的著名遗言。好的,我同意你所说的