PHP脚本中的MySQL\u查询错误

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

我的目标是循环遍历目录中的所有.CSV文件,并为每个文件运行此脚本,以便将数据附加到数据库中。问题源于我在下面插入循环。我已经编译了一个PHP脚本,在将单个.CSV文件读入MySQL数据库时,它可以完美地工作。尽管如此,在将导入脚本插入循环后调用mysql_查询函数时,我还是遇到了以下错误:无法通过socket'/tmp/mysql.sock'(2)连接到本地mysql服务器

$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);
            }
        }
    }
}