我有一个batchcode.txt,其中包含批处理代码列表。
645863
302422
430307
821773
599738
671768
732159
等等
我的数据库中有一个名为batchcode的表,其中包含字段'id','batchcode'。
我的问题是它不会将我的文本文件插入到名为batchcode的表中。我已经完成了导入和选择表但没有任何作用...
我需要一些帮助,任何人都可以帮助我。
<?php
$host= "localhost";
$user= "root";
$pass= "";
$db="klayton";
$connect= mysql_connect($host,$user,$pass);
if (!$connect)die ("Cannot connect!");
mysql_select_db($db, $connect);
$file = fopen("batchcode.txt","r");
while(! feof($file))
{
$sql = "INSERT INTO batchcode( batchcode ) VALUES ('fgets($file)')"; //Insert every read line from txt to mysql database
mysql_query($sql);
}
fclose($file);
?>
我收到一条错误消息“致命错误:第22行的C:\ xampp \ htdocs \ test \ index.php超出了30秒的最长执行时间”
答案 0 :(得分:1)
如果php未处于安全模式,您可以使用max_execution_time
ini_set('max_execution_time', 0); //0 unlimited time, best to use a high number
每行一个查询不是一个好的想法。需要花费很长时间,因为每次插入后都会重建任何索引。您可以使用LOAD DATA LOCAL INFILE之类的:
LOAD DATA LOCAL INFILE 'C:\\bigfile.txt' INTO TABLE `database`.`batchcode` LINES TERMINATED BY '\r\n' (`batchcode `);
使用\ r \ n或\ n取决于您的文件。文件的路径必须是mysql客户端运行的位置。
答案 1 :(得分:1)
使用当前代码,函数fgets($file)
将永远不会被执行,因此! feof($file)
始终为true
,而while循环将一直运行直到执行时间限制。
您应该重写插入查询,如下所示:
while( $batchcode = fgets($file) )
{
$sql = "INSERT INTO batchcode( batchcode ) VALUES ('$batchcode')";
mysql_query($sql);
}