0

我正在编写一小段代码,该代码从 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 之外也让我担心)

我打开文件,写入文件,然后关闭它,但我什至打开文件之前的回声正在写入它,在我关闭它后有一个回声也是如此。

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

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

4

1 回答 1

1

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

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

于 2013-10-31T23:27:42.860 回答