PHP MySQL 将特定字段查询为 CSV
PHP MySQL query specific fields to CSV
我正在尝试从我的查询结果中创建一个 CSV 文件,但我需要先格式化数据,然后再将其写入 CSV。
我有一个工作代码可以将整行打印到 csv 并且工作正常。
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
$output = fopen("php://output", "w");
fputcsv($output, array('ID', 'Name', 'Country', 'Province/City' 'Address', 'Gender', 'Track', 'Payment Option'));,
$sql = "SELECT * FROM STUDENTINFO order by GRADELEVEL";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
fputcsv($output, $row);
}
fclose($output);
我知道上面的代码输出了完整的行。但是有没有办法在写入 csv 之前先格式化特定字段?
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
$name = $row['FIRSTNAME']." ".$row['MIDDLENAME']." ".$row['LASTNAME'];
$gradelevel = glvlDESCRIPTION(row['GRADELEVEL']);
if ($row['TRACK'] == "AW")
{
$track = "A With Activities";
}
else
{
$track = "A Without Activities";
}
fputcsv($output, $row['STUDENTID'], $name, $row['COUNTRY'], $row['PROVINCE'], $row['ADDRESS'], $track...);
}
fclose($output);
fputcsv
需要一个数组作为第二个参数,因此您可以事先构建数据,或者只需在调用中添加 []
舍入数据以将其作为数组传递。 ..
fputcsv($output, [ $row['STUDENTID'], $name, ... ])
我正在尝试从我的查询结果中创建一个 CSV 文件,但我需要先格式化数据,然后再将其写入 CSV。
我有一个工作代码可以将整行打印到 csv 并且工作正常。
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
$output = fopen("php://output", "w");
fputcsv($output, array('ID', 'Name', 'Country', 'Province/City' 'Address', 'Gender', 'Track', 'Payment Option'));,
$sql = "SELECT * FROM STUDENTINFO order by GRADELEVEL";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
fputcsv($output, $row);
}
fclose($output);
我知道上面的代码输出了完整的行。但是有没有办法在写入 csv 之前先格式化特定字段?
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
$name = $row['FIRSTNAME']." ".$row['MIDDLENAME']." ".$row['LASTNAME'];
$gradelevel = glvlDESCRIPTION(row['GRADELEVEL']);
if ($row['TRACK'] == "AW")
{
$track = "A With Activities";
}
else
{
$track = "A Without Activities";
}
fputcsv($output, $row['STUDENTID'], $name, $row['COUNTRY'], $row['PROVINCE'], $row['ADDRESS'], $track...);
}
fclose($output);
fputcsv
需要一个数组作为第二个参数,因此您可以事先构建数据,或者只需在调用中添加 []
舍入数据以将其作为数组传递。 ..
fputcsv($output, [ $row['STUDENTID'], $name, ... ])