php - CSV 导出 : Multiple Database Rows to Single Row

标签 php mysql csv

嗨,

问题:我有一个从数据库的导出,但是它需要从两个表中提取数据。我通过内部连接实现了这一点。

artikel 是包含基本信息的表格。它包含 ID、商品编号、名称、类型和包装形式。

article_content 是包含文章一部分文本的表,但是有多种语言。每篇文章的每种语言都有一行。

导出代码

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=artikeldatenbank-' . date("dmyhi") . '.csv');

$output = fopen('php://output', 'w');

$stmt = $db->prepare('SELECT artikel.id, artikel.artikel_nummer, artikel.artikel_name, artikel.artikel_packung, artikel.artikel_cat, article_content.article_text, article_content.article_recuse, article_content.article_spec FROM artikel INNER JOIN article_content ON article_content.article_id = artikel.artikel_nummer');
$stmt->execute();

$result = $stmt->get_result();

while ($row = $result->fetch_assoc())
fputcsv($output, $row);

我想要实现的目标

我需要将 article_content 表中的每一行按其文章放在一行中,而不是多行。抱歉提供链接,但 imgur 不允许我上传这些链接。 (不知道为什么)

现在发生了什么(图片):http://prntscr.com/ek86bn

我想要什么(编辑后的图片):http://prntscr.com/ek87ct

实现这一目标的最佳方法是什么?我现在这样做可能吗?

最佳答案

跳过VIEW解决方案,通过代码解决,我的建议是

$result = $stmt->get_result();

$artikeID = '';
$newRow = [];
while ($row = $result->fetch_assoc())
{
    if($artikeID != $row['id'])
    {
        if(!empty($newRow))
        {
            fputcsv($output, $newRow);
            $newRow = [];
        }
        $artikeID = $row['id'];
        $newRow = $row;
    }
    else 
    {
        $newRow['title-'.$row['id']] = $row['artikel_name'];
        $newRow['content-'.$row['id']] = $row['article_text'];
    }
}

关于php - CSV 导出 : Multiple Database Rows to Single Row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42809593/

相关文章:

php - 如何使用 PHP 对数组的对象属性求和

php - PHP中的错误处理。怎么做?

php - 使用 CodeIgniter 和 jQuery 验证插件检查电子邮件是否存在总是返回 false

javascript - Nodejs : write list into csv

python - 使用 panda 将列拆分为 csv

javascript - 使用 ajax 和 codeigniter 通过 Controller 将数据发送到模型

Php 更新查询不起作用

mysql - 删除具有多个值的 SQL 行,其中 ID 在另一个表中不匹配

mysql - 使用事件记录轨优化查询

javascript - 无法将表导出为 csv