PHP MySQLI 命令后出现的 Echo 语句

PHP Echo Statements Occurring After MySQLI Commands

我有一个 php 用来清理一些 MySQL 数据表(截断命令),并向屏幕输出一些表明任务已完成的消息(ECHO 语句)。

然后 PHP 通过 LOAD DATA INFILE 命令将几个 CSV 文件加载到最近清理的数据库表中。接下来是一些 echo 语句,表示任务已完成。

我遇到的问题是只有在 MYSQL 工作完成后才会向屏幕输出所有内容。我想让 echo 语句先于 MYSQL 过程,这可能需要一分钟或更长时间,以便用户知道该过程正在进行并且可能需要一些时间。

echo "<center><strong>Cleaning up tables in preparation of importing data files...<strong></center><br>";

//select the database we are going to be using
mysqli_select_db($conn, "database");

//truncate (empty) the three tables
mysqli_query($conn, 'TRUNCATE TABLE firsttable;');
mysqli_query($conn, 'TRUNCATE TABLE secondtable;');
mysqli_query($conn, 'TRUNCATE TABLE thirdtable;');

//provide feedback on process
echo "<center><strong>Tables cleaned!</strong></center><br>";

//queries which will load datafiles into the tables
$query = "LOAD DATA INFILE \"D:/wamp64/www/folder/firsttable.csv\" INTO TABLE altoccurrences COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES";
$query2 = "LOAD DATA INFILE \"D:/wamp64/www/folder/secondtable.csv\" INTO TABLE altimages COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES";
$query3 = "LOAD DATA INFILE \"D:/wamp64/www/folder/thirdtable.csv\" INTO TABLE altidentifications COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES";

//send queries to MySQL and check for potential errors.
$result = mysqli_query($conn, $query) or die ('Could not connect to mysqli: ' . mysqli_error($conn));
$result2 = mysqli_query($conn, $query2)  or die ('Could not connect to mysqli: ' . mysqli_error($conn));
$result3 = mysqli_query($conn, $query3)  or die ('Could not connect to mysqli: ' . mysqli_error($conn));

//provide feedback on process
echo "<center><h2><strong>Your Files Have Been Inserted into Database!</strong></h2></center><br>";

PHP 通常在发送之前缓冲内容。在每次回显后尝试以下代码,以尝试强制 PHP 立即发送数据。

@flush();