2014-01-24 38 views
0

我想知道如果任何人都可以給我一隻手。我現在有3個表如下:PHP/MySQL的選擇查詢發出

用戶(user_ID的,用戶名,名字,姓氏,密碼) 模塊(模塊id,名,CRN) userModule(USER_ID,是模塊)

什麼是最好的方式訪問這個?從做基礎研究,它看起來像右連接將是適當的...

我怎麼會去根據user_ID的變量看模塊表?

我給它以前在這裏,但它似乎並沒有工作。

$result = mysql_query("SELECT * FROM module JOIN userModule ON (module.module_id = userModule.module_id) JOIN users ON (userModule.user_id = users.user_id) WHERE user_id = 2"); 

$row = mysql_fetch_row($result); 

echo $row[0]; 
echo $row[1]; 
echo $row[2]; 
+0

遺憾,只是我複製/粘貼錯誤。現在它的固定 – user1839601

+0

如果你添加錯誤檢查它應該告訴你你的錯誤是什麼。它是模塊還是模塊,它在你的問題和你的查詢之間是不一致的。 –

+0

當我嘗試運行我的代碼時,它給出了以下錯誤:警告:mysql_fetch_row()期望參數1是資源,布爾在第13行給出的C:\ Program Files \ xampp \ htdocs \ fyp3 \ index.php中。 我會將代碼編輯到原始文章中。 – user1839601

回答

1
$result = mysql_query("SELECT * FROM modules LEFT JOIN userModule ON userModule.module_id = modules.module_id WHERE userModule.user_id = 2"); 

它應該工作!

更重要的是,如果你只是想獲得的模塊信息:

SELECT modules.* FROM modules .... 

我使用LEFT JOIN,但還有其他幾種方法:RIGHT JOIN,INNER JOIN或FULL JOIN。看看這些方法在這裏有什麼區別:http://www.w3schools.com/sql/sql_join.asp

此外,你應該總是添加「或死(mysql_error());」在你的mysql_query()之後。如果查詢錯誤(錯誤的格式化,錯誤的字段等),將會打印出一個有用的錯誤。

+0

我希望爲登錄的特定用戶提供模塊。您的查詢對我來說非常合適。非常感激。 – user1839601

+0

不客氣。你只是忘了指定一個JOIN方法。它始終是左加入,右加入,內部加入或完全加入,但不只是「加入」。至少我想。 – StephaneMombuleau

+0

那麼你的方式工作,所以我不會爭辯:) – user1839601