PHP:基于2列将mysql数据库导出为CSV?

时间:2017-08-30 10:43:41

标签: php mysql csv

我在mysql数据库中有一个用户表,每个用户都有一个limit 1, 1列和一个referral_code列。

referral_code_used包含可与他人共享的用户引荐代码。

referral_code包含用户从其他用户收到的推荐代码,他们在注册时输入了这些代码。

示例:

referral_code_used

在上面的示例中,用户B使用了用户A user referral_code referral_code_used email A TW89 email@email.com --------------------------------------------------------------- B TW66 TW89 email2@email.com

现在,我需要做的是将此数据导出为CSV文件,CSV文件应如下所示(

referral_code

就是这样。

到目前为止,我可以使用以下代码将整个mysql导出为CSV文件,但我无法弄清楚如何做我想做的事情,我不知道是否可能:

referrer                   referred         

email@email.com         email2@email.com 

非常感谢任何帮助。

提前致谢。

修改

我试过这个,这将生成一个空的CSV文件:

<?php

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

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

    $rows = mysqli_query($db, 'SELECT * FROM `users`');

    while ($row = mysqli_fetch_assoc($rows)) {


      fputcsv($output, $row);
    }
    fclose($output);
    mysqli_close($db_conx);
    exit();

?>

我根本没有看到任何错误!

2 个答案:

答案 0 :(得分:1)

这应该有效 - 您正在寻找的概念是将表内连接到自身,以便根据引用代码匹配不同的行:

select 
  A.email as 'referrer', 
  B.email as 'referred'
from 
  users A
  inner join users B
    on A.referral_code = B.referral_code_used

答案 1 :(得分:1)

这看起来像是必须在同一个表上进行连接的情况。我想象这样的事情:

Select u.email as referrer, ref.email as referred from users u 
INNER JOIN users ref on u.referral_code=ref.referral_code_used