您好,
问题:我从数据库导出,但是需要从两个表中提取数据。我通过内部联接实现了这一点。
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
实现这一目标的最佳方法是什么?这可能是我现在这样做的方式吗?
答案 0 :(得分:1)
跳过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'];
}
}