我在 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/