使用 PHP 使用 WHILE 语句创建 CSV 文件

问题描述 投票:0回答:1

表中数据

123 CA

456 层

33 CA

这有效:

$file_name = "table.csv";
$sql="SELECT filename,state FROM table1"; 
$result=mysqli_query ($dbc,$sql);
$fp = fopen($file_name, 'a');
    while($row = mysqli_fetch_array($result,MYSQLI_ASSOC))
    {
        
        fputcsv($fp, $row);

    }

fclose($fp);
$str=file_get_contents($file_name);
file_put_contents($file_name, $str);

输出:

123 CA

456 层

33 CA

但是如果我想解析数据并根据需要修改/插入变量。我不知道如何将数据逐行传递到 csv 文件

    while($row = mysqli_fetch_array($result,MYSQLI_ASSOC))
    {
     $filename1 = $row['filename'];
      if($filename1 > 100){
         $filename = $filename1;
         } else {

         $filename = NULL;
         }

        fputcsv($fp, $filename);

    }

我尝试创建一个数组 $文件名=数组();

  $filename[] = $row['filename'] . $row['state'];

但是数据没有正确传递(没有回车)到csv文件

所需输出:

123 CA

456 层

编辑:

我更新了代码:

 while($row = mysqli_fetch_array($result,MYSQLI_ASSOC))
 {


$filename[] = ['filename' => $row['filename'], 'state' => $row['state']];


fputcsv($fp, $filename);
       
    
 }

但我最终得到了这个结果:

result

php
1个回答
0
投票

要在将数据写入 CSV 文件之前修改数据,您可以在 While 循环中创建一个新数组并将其传递给 fputcsv。根据您的要求,这是我的代码:

$file_name = "table.csv";
$sql = "SELECT filename, state FROM table1"; 
$result = mysqli_query($dbc, $sql);

if ($result) {
    $fp = fopen($file_name, 'a');
    if ($fp) {
        while ($row = mysqli_fetch_assoc($result)) {
            $filename = ($row['filename'] > 100) ? $row['filename'] : NULL;
            $data = [$filename, $row['state']];
            fputcsv($fp, $data);
        }
        fclose($fp);
    } else {
        echo "Error opening the file.";
    }
} else {
    echo "Error executing the query.";
}

© www.soinside.com 2019 - 2024. All rights reserved.