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

时间:2013-10-31 21:36:37

标签: php html header writetofile

我正在处理一小段代码,它从SQL表中获取特定记录,并将该记录中的某些列放在txt文件中。这样可以正常工作,但是如果我尝试将某些内容回显到屏幕上,在我打开文件或fwrite的地方之前或之后,它也会将回显放在文件中,即使文本外面的文本也放在文件中。

以下是我目前的代码:'whole:

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以外的人都担心我)

我打开文件,写入文件,然后关闭它,然后在我打开文件之前的回声被写入它,同样在我关闭它之后有回声。

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

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

1 个答案:

答案 0 :(得分:1)

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

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