Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将整个列从数据库获取到文件?_Php_File - Fatal编程技术网

Php 如何将整个列从数据库获取到文件?

Php 如何将整个列从数据库获取到文件?,php,file,Php,File,我正试图开发一个简短的代码,使我能够从一个表的on列中获取整个数据,并将其转换为一个.txt文件 $query = $connection->prepare("SELECT * FROM newsletter WHERE status = :status"); $query->execute(array(":status" => "1")); while ($row = $query->fetch(PDO::FETCH_ASSOC)) { $fil

我正试图开发一个简短的代码,使我能够从一个表的on列中获取整个数据,并将其转换为一个.txt文件

$query = $connection->prepare("SELECT * FROM newsletter WHERE status = :status");
    $query->execute(array(":status" => "1"));
    while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
    $file = $_SERVER['DOCUMENT_ROOT']."/assets/files/".$date=date("d-m-Y")."-newsletter.txt";
    $openf = fopen($file, "w");
    $current = file_get_contents($file);
    $current .= "".$row["email"].",";
    file_put_contents($file, $current);
    fwrite($openf, $current);
    fclose($openf);
}
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
header("Content-Type: text/plain");
readfile($file);
到目前为止,这就是我所知道的,但主要问题是它只在.txt文件中打印1行,是否应该至少打印2行。
有人能帮我解决这个问题吗?我尝试过不同的方法,但迄今为止没有一种有效。

在循环之前创建文件,并在循环之后保存

$query = $connection->prepare("SELECT * FROM newsletter WHERE status = :status");
$query->execute(array(":status" => "1"));
//create file
$file = $_SERVER['DOCUMENT_ROOT']."/assets/files/".$date=date("d-m-Y")."-newsletter.txt";
$openf = fopen($file, "w");
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$current = file_get_contents($file);
$current .= "".$row["email"].",";
file_put_contents($file, $current);
}
//save and close
fwrite($openf, $current);
fclose($openf);
...

您不必保存文件。您可以立即回显您的数据,也就是说,您在每次迭代时都会覆盖您的文件,这是怎么回事?我创建了一个文件,下载后它会被自动删除……并且重复两次,创建一个文件然后删除它是绝对没有意义的。除非有几兆字节的数据。