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

标签 php mysql csv

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

referral_code 包含可以与他人共享的用户推荐代码。

referral_code_used 包含用户从其他用户那里收到并在注册期间输入的推荐代码。

例子:

user   referral_code    referral_code_used        email

A         TW89                                email@email.com
---------------------------------------------------------------
B         TW66               TW89            email2@email.com   

在上面的示例中,用户 B 使用了用户 A referral_code

现在,我需要做的是将此数据导出到 CSV 文件中,CSV 文件应如下所示(类似):

referrer                   referred         

email@email.com         email2@email.com 

就是这样。

到目前为止,我可以使用以下代码将整个 mysql 导出为 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();

?>

如有任何帮助,我们将不胜感激。

提前致谢。

编辑:

我试过了,这会生成一个空的 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_conx, 'SELECT u.email as referrer, ref.email as referred from users u INNER JOIN users ref on u.ref_code=ref.ref_code_used');

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


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

?>

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

最佳答案

这应该可行 - 您正在寻找的概念是将表内部连接到自身,以便根据推荐代码将不同的行彼此匹配:

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

关于PHP:基于 2 列将 mysql 数据库导出为 CSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45958319/

相关文章:

php - 如何在 while 循环中将选中的复选框传递到下一页

php - 仅在 IE11 中不设置 session Cookie

php - OpenX:停用横幅以显示在区域中

mysql - 我想在第三个括号 [] 内获取字符串

php - 在 php 中查询下拉列表中的选定项目

mysql - 试图了解 Rails 测试的工作原理并遇到模型问题

r - 忽略 readr::read_csv 中的尾随分隔符

php - mysql 多表外键? - 初学者

java - 难以从字符串列表中播放真实值

PostgreSQL:如何避免 COPY 命令输出中不需要的字符?