PHP脚本中的MySQL\u查询错误
我的目标是循环遍历目录中的所有.CSV文件,并为每个文件运行此脚本,以便将数据附加到数据库中。问题源于我在下面插入循环。我已经编译了一个PHP脚本,在将单个.CSV文件读入MySQL数据库时,它可以完美地工作。尽管如此,在将导入脚本插入循环后调用mysql_查询函数时,我还是遇到了以下错误:无法通过socket'/tmp/mysql.sock'(2)连接到本地mysql服务器PHP脚本中的MySQL\u查询错误,php,mysql,Php,Mysql,我的目标是循环遍历目录中的所有.CSV文件,并为每个文件运行此脚本,以便将数据附加到数据库中。问题源于我在下面插入循环。我已经编译了一个PHP脚本,在将单个.CSV文件读入MySQL数据库时,它可以完美地工作。尽管如此,在将导入脚本插入循环后调用mysql_查询函数时,我还是遇到了以下错误:无法通过socket'/tmp/mysql.sock'(2)连接到本地mysql服务器 $con=@mysql\u connect($databasehost、$databaseusername、$datab
$con=@mysql\u connect($databasehost、$databaseusername、$databasepassword)或die(mysql\u error());
@mysql_选择_db($databasename)或die(mysql_error());
//清除表中的旧内容
$queryDelete=“从$databasetable中删除;”;
$resultDelete=@mysql\u query($queryDelete)或die(“清除旧数据表时出错:$query
”。mysql\u Error());
//读取CSV文件的目录
//要扫描的目录的路径(如果不在同一文件夹中)
$directory=“../data/”;
//获取当前目录中扩展名为.csv的所有文件,否则添加$csvfiles=glob($DIRECTORY.*.csv”);
$csvfiles=glob(“*.csv”);
$numCSVFiles=count($csvfiles);
//抓取每个CSV文件并导入数据库
对于($i=0;$i<$numCSVFiles;$i++){
$csvfile=$csvfile[$i];
//测试文件
如果(!file_存在($csvfile)){
未找到echo“文件(“.$csvfile.”)。请确保指定了正确的路径。\n”;
出口
}
$file=fopen($csvfile,“r”);
如果(!$file){
echo“打开数据文件时出错。\n”;
出口
}
$size=filesize($csvfile);
如果(!$size){
echo“文件为空。\n”;
出口
}
$csvcontent=fread($file,$size);
fclose($文件);
$lines=0;
$querys=“”;
$linearray=array();
foreach(拆分($lineseparator,$csvcontent)为$line){
$lines++;
$line=trim($line,“\t”);
$line=str\u replace(“\r”,”,$line);
/************************************
此行转义特殊字符。如果csv文件中的条目已转义,请将其删除
************************************/
//$line=stru替换(“'”、“\'”、$line);
/*************************************/
$linearray=爆炸($fieldseparator,$line);
$linemysql=内爆(“,”,$linearray);
如果($addauto==1)
$query=“插入$databasetable值(“”,$linemysql');”;
其他的
$query=“插入$databasetable值(“$linemysql”);”;
$querys.=$query.“\n
”;
//这就是在循环内部运行时发生错误的地方
$result=@mysql\u query($query)或die(“错误1:”.mysql\u Error()。“
尝试的查询:”.$query);
如果(!$result){$resultText=“无法执行MySQL查询。请稍后重试。”;}否则{$resultText=“成功执行查询。”;}
}
@mysql_close($con)或die(“错误2:.mysql_Error());
//记录mysql查询
如果($save){
如果(!是可写的($outputfile)){
echo“文件不可写,请检查权限。\n”;
}
否则{
$file2=fopen($outputfile,“w”);
如果(!$file2){
echo“写入输出文件时出错。\n”;
}
否则{
fwrite($file2,$querys);
fclose(2美元);
}
}
}
}
您正在关闭循环内的数据库连接。如果要继续使用,请不要关闭连接。您正在关闭循环中的数据库连接。如果要继续使用,请不要关闭连接。您在循环中执行的是mysql\u close()
,因此在插入第一个文件后,请关闭数据库连接,然后尝试插入下一个文件
如果您的代码正确缩进,您就会看到这个问题。您正在循环中执行
mysql\u close()
,因此在插入第一个文件后,您会终止DB连接,然后尝试插入下一个文件
如果您的代码正确缩进,您就会看到这个问题。我认为您缺少了一个右括号
{
mysql\u close()
调用太早:它在($i=0;$i<$numCSVFiles;$i++)的循环中被调用。我认为您缺少了一个右括号{
调用mysql\u close()
太早:在($i=0;$i<$numCSVFiles;$i++)的中调用它
loop.首先,删除所有@mysql_uuu调用,这将导致一些无声的失败…不要删除调用。删除调用上的@
。首先,删除所有@mysql_uuu调用,这将导致一些无声的失败…不要删除调用。删除调用上的@
。@Dunhamzzz-如果你不去的话要真正阅读代码,请不要发布comments@Dunhamzzz-如果你不打算真正阅读代码,就不要发表评论,走吧!谢谢大家。我就知道它会出现在我面前。只是需要一些新鲜的眼睛。现在很有魅力。好了!谢谢大家。我就知道它会出现在我面前我。只是需要一些新鲜的眼睛。现在很有魅力。
$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
@mysql_select_db($databasename) or die(mysql_error());
//CLEAR old contents from table
$queryDelete = "delete from $databasetable;";
$resultDelete = @mysql_query($queryDelete) or die("Error clearing table of old data: $query<br />" . mysql_error());
//READ directory for CSV files
//path to directory to scan IF NOT IN SAME FOLDER
$directory = "../data/";
//get all files IN CURRENT DIRECTORY with a .csv extension OTHERWISE add $csvfiles = glob($directory . "*.csv");
$csvfiles = glob("*.csv");
$numCSVFiles = count($csvfiles);
//Grab each CSV file and import to DB
for ($i = 0; $i < $numCSVFiles; $i++) {
$csvfile = $csvfiles[$i];
//TEST FILES
if(!file_exists($csvfile)) {
echo "File (" . $csvfile . ") not found. Make sure you specified the correct path.\n";
exit;
}
$file = fopen($csvfile,"r");
if(!$file) {
echo "Error opening data file.\n";
exit;
}
$size = filesize($csvfile);
if(!$size) {
echo "File is empty.\n";
exit;
}
$csvcontent = fread($file,$size);
fclose($file);
$lines = 0;
$queries = "";
$linearray = array();
foreach(split($lineseparator,$csvcontent) as $line) {
$lines++;
$line = trim($line," \t");
$line = str_replace("\r","",$line);
/************************************
This line escapes the special character. remove it if entries are already escaped in the csv file
************************************/
//$line = str_replace("'","\'",$line);
/*************************************/
$linearray = explode($fieldseparator,$line);
$linemysql = implode("','",$linearray);
if($addauto == 1)
$query = "insert into $databasetable values('','$linemysql');";
else
$query = "insert into $databasetable values('$linemysql');";
$queries .= $query . "\n<br />";
//THIS IS WHERE THE ERROR OCCURS WHILE RUNNING INSIDE THE LOOP
$result = @mysql_query($query) or die("Error 1: " . mysql_error() . "<br />Query Attempted: " . $query);
if(!$result) { $resultText = "Failure to execute MySQL queries. Please try again later."; } else { $resultText = "Successfully executed queries."; }
}
@mysql_close($con) or die("Error 2: " . mysql_error());
//LOG mysql queries
if($save) {
if(!is_writable($outputfile)) {
echo "File is not writable, check permissions.\n";
}
else {
$file2 = fopen($outputfile,"w");
if(!$file2) {
echo "Error writing to the output file.\n";
}
else {
fwrite($file2,$queries);
fclose($file2);
}
}
}
}