嗨,
问题:我有一个从数据库的导出,但是它需要从两个表中提取数据。我通过内部连接实现了这一点。
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/