2017-08-30 79 views
3

我有一個mysql數據庫中的用戶表,每個用戶有一個referral_code列和referral_code_used列。PHP:根據2列將mysql數據庫導出爲CSV?

referral_code擁有用戶可以與他人共享的推薦代碼。

referral_code_used保存用戶從其他用戶收到並且他們在註冊期間輸入的引薦代碼。

實施例:

user referral_code referral_code_used  email 

A   TW89        [email protected] 
--------------------------------------------------------------- 
B   TW66    TW89   [email protected] 

在上面的例子中,用戶B已經使用的用戶A referral_code

現在,我需要做的就是將這些數據導出到一個CSV文件,CSV文件應該是這樣的(排序):

referrer     referred   

[email protected]   [email protected] 

就是這樣。

到目前爲止,我可以使用下面的代碼導出整個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(); 

?> 

,我沒有看到任何錯誤了!

+0

調試導出CSV文件,嘗試使用ob_clean()在文件的啓動和使用的error_reporting(E_ALL),並確保你的SQL查詢工作 –

+0

你有u.ref_code = ref.ref_code_used,根據你的數據庫,應該是你。 referral_code = ref。 referral_code_used 難道是這樣嗎? –

回答

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 
+0

這也會生成一個空的CSV文件! –

+0

在嘗試創建CSV文件之前首先單獨測試查詢(例如,在mysql工作臺中)。也許你沒有給我們一個數據結構或內容的準確描述。 – ADyson

+0

我只是儘量減少一切。顯然MYSQL表有更多的列,但沒有必要在我的問題中提及它們。 –

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 
+0

請查看我的編輯。 –