2014-06-24 22 views
-3

我目前正在通過Joomla(創建模塊)創建一個僅爲成員的網站。 當會員登錄時,我希望他們能夠看到他們的點數(想想它像一個航空公司傳單點數站點),這是獨一無二的。我已將這些點存儲在數據庫的表中。將數據庫行與登錄用戶關聯

我有兩個表:
#__users(基本的用戶表)
#__smiles_users(此存儲的用戶名,點等等等等)

兩個表具有一個類似的列,這是「用戶名」。

我認爲在MYSQL查詢中這樣做是明智的做法。

連接到MySQL
發現,被記錄在通過#__users
查找#__smiles_users表
回聲結果是特定的行中的匹配用戶名的用戶名(包含正確的用戶名)

我已連接到MYSQL,回顯結果,但我不得不指定WHERE函數。

+1

這是一個很好的故事。謹慎闡述你的問題或問題? – ScottMcGready

+0

我很確定表名中不允許有'#'字符('#'在SQL中啓動註釋)。另外,爲什麼您的表名稱前面加兩個下劃線? – Nathan

+0

#__在joomla,當你查詢一個表格時,你用#__ – marc180292

回答

0

沒有做到這一點兩種主要方法有:

  1. 您可以執行兩個單獨的查詢爲每個表,並通過PHP關聯數組加入他們的行列:

    SELECT * FROM `__users` WHERE `username` = ? 
    

    並存儲結果一個變種:

    $user = $result->fetch(); 
    

    然後做第二個查詢其餘數據的蘇CH用戶:

    SELECT * FROM `__simles_users` WHERE `username` = ? 
    

    而且編程加入數據是這樣的:

    $user_smiles_data = $result->fetch(); 
    foreach($user_smiles_data as $key => $value) { 
        $user[$key] = $value; 
    } 
    
  2. 或者是這樣的,如果你不想執行兩個不同的查詢:

    SELECT * FROM `__users` 
    INNER JOIN `__smiles_users` 
    ON `__users`.`username` = `__smiles_users`.`username` 
    

    這合併兩個表username字段在查詢時間。結果將包括同一個username上單個行上兩個表的所有字段。

+0

嗨arielnmz。感謝您的迅速回復。我理解你的答案,我相信在「合併表格」時這將是一個很好的途徑。 糾正我,如果我錯了。但是上面的代碼是否定義了登錄到網站的用戶? – marc180292

+0

然後,您應該在任何定義了「logged」狀態的表上添加一列,並查詢「username」和所需的記錄狀態。如果你不能這樣做,那麼你需要另一種方法來首先知道用戶是否登錄,以及它的「用戶名」。 – arielnmz

+0

我一直在做更多的研究,$ _SESSION會是更好的替代方案嗎?當將表連接在一起時,你已經回答了我的問題。但是我覺得如果我有一個「登錄」列,有時候如果有兩個人登錄,它可能會搞砸了? – marc180292

-1

您可能要創建從一個表到另一個表的外鍵。

例如,在SQL:

ALTER TABLE #__smiles_users 
ADD FOREIGN KEY (username) 
REFERENCES #__users(username) 

這將創建從一個表到其他的鏈接,以確保數據的完整性。

+0

儘管你在陳述中是正確的,但原始問題(如現狀)在試圖達成的目標上確實不清楚,並不是真正的答案,在評論部分更好,直到提問者澄清。 – ScottMcGready

+0

嗨ktbird。儘管這不能回答這個問題。它激發了我正在研究的其他事物的想法。謝謝 – marc180292

+0

我同意斯科特,但我無法發表評論。很高興幫助Marc。 – ktbird7

相關問題