我尝试写入屏幕的所有内容都放置在文本文件(PHP)中


Everything I try to write to screen is placed in a text file (PHP)

我正在处理一小段代码,该代码从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 之外写东西的事实让我担心)

我打开文件,写入文件,

然后关闭它,但是在我打开文件之前,回显正在写入它,关闭它之后的回显也是如此。

这对我来说真的很奇怪,没有任何意义,尽管可能有一个简单的解释。

编辑:只有下载的文件才有额外的东西,保存在服务器上的文件只是表中的数据。

您现在使用标头的方式,所有输出都将放在下载中。如果您想要一个带有下载链接的网页,请创建带有链接的第二个页面,链接到此页面。然后在此页面上,仅回显文件中所需的数据。

基本上,您对标头所说的是,为此请求发送到浏览器的所有内容都将是您要下载的文件。