我正在编写一小段代码,该代码从 SQL 表中获取特定记录,并将该记录中的某些列放在 txt 文件中。这很好用,但是,如果我尝试在屏幕上回显某些内容,则在我打开文件或 fwrite 的位置之后或之前,它也会将回显放置在文件中,甚至文件之外的文本也会放置在文件中。
这是我当前的全部代码:
Even this outside the PHP is placed in the file.
<?php
echo "Banana";
$orderNo = 3;
//DB Connect
$conn = mysql_connect('localhost', 'root', '');
mysql_select_db('amazondb', $conn);
//Open file, select Table
$file = fopen('upload/Order.txt', 'w');
$result = mysql_query("SELECT ID, PurchaseDate, BuyerName, BuyerPhoneNumber,
BuyerEmail, ShipAddress1, ShipAddress2, ShipAddress3
FROM imported_orders");
//Loop, input to file
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{ if($row['ID']==($orderNo-1))
{fwrite($file, $row['PurchaseDate'].PHP_EOL .$row['BuyerName']);}
}
fclose($file);
//Download File
$filename = "upload/Order.txt";
header("Content-Length: " . filesize($filename));
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=Order.txt');
readfile($filename);
?>
上面的代码将以下内容输出到文件:
Even this outside the PHP is placed in the file.
Banana2013-03-14
name
这是我第一次使用标头并使用 PHP 进行任何形式的下载,所以不确定这是否会导致问题。(我将使用 if isset 通过 HTML 表单触发下载,并且代码中的“$orderNo”将由用户输入,不确定现在这样做是否会解决这个问题,尽管它会写东西即使在 PHP 之外也让我担心)
我打开文件,写入文件,然后关闭它,但我什至打开文件之前的回声正在写入它,在我关闭它后有一个回声也是如此。
这对我来说真的很奇怪并且没有意义,尽管可能有一个简单的解释。
编辑:只有下载的文件有额外的东西,保存在服务器上的文件只是表中预期的数据。