2013-05-29 48 views
0

我真的希望你可以清除我的事情關於JOIN使用PHP,因爲我真的很難與它的工作原理。加入多個表使用PHP有關的會員ID

基本上我有兩張桌子,一個是高級會員,另一個是這些會員的粉絲。所以我想從「高級」表中獲得某個成員($ memberid)是粉絲的某些信息。

保費= ID,姓名,頭像,鎮,等等等等 粉絲=風扇($ MEMBERID),fanee(高級ID)

所以我在此刻驗證碼:

<?php 
$get_connections_sql = "SELECT id, name, avatar, town FROM premium LEFT JOIN fans ON fans.fanee=premium.id WHERE fans.fan=$memberid LIMIT 18"; 
$get_connections_res = mysqli_query($con, $get_connections_sql); 
if(mysqli_affected_rows($con)>0){ 
    while ($connections = mysqli_fetch_assoc($get_connections_res)){ 
     $connectionid = $connections['id']; 
     $connectionname = $connections['name']; 
     $connectiontown = $connections['town']; 
     $connectionavatar = $connections['avatar']; 

    $connections .= " 

     <div class=\"connectionHolder\"><img class=\"connection\" src=\"uploads/avatars/pro/$connectionavatar\" /></div> 

    "; 
    } 
}else{ 

    $connections = " 

     <div class=\"noContent\">There are no connections to be shown</div> 

    "; 

} 
?> 

這是返回else條件,所以我的JOIN行肯定有什麼問題 - 任何人都可以請我指出正確的方向。謝謝

+0

在if之前檢查'$ get_connections_res'的值,如果它是falsey,那麼查詢中有錯誤。使用'mysqli_error'來報告錯誤。 –

+0

啊正確的,現在它說在字段列表中的列'id'不明確「 – user2379000

+0

'SELECT premium.id' ... –

回答

1

你說過'id'這個列是不明確的,這是因爲你在查詢中引用了兩個表,'id'列和MySQL不知道選擇哪一個。您可以通過添加表名像這樣具體:

SELECT premium.id, ... 

此外,你會想mysqli_num_rows()而不是mysqli_affected_rows()。由於您的查詢不會影響任何行(如更新,刪除,插入),而是返回一組行。

mysql_num_rows()將查詢的結果作爲其參數(在您的案例中爲$get_connections_res)而不是連接。爲了確保結果是有效的,首先在if ...之前檢查$ get_connections_res的值,如果它是falsey,那麼查詢中有錯誤。使用mysqli_error()報告錯誤。

+0

感謝Phill指出 - 我已經改變了它,但它仍然沒有返回任何值? – user2379000

+0

雖然它現在進入'if'而不是'else'嗎? –

+0

不,我認爲它必須是在SELECT中的錯誤,因爲它現在返回錯誤:警告:mysqli_num_rows()期望參數1是mysqli_result,對象在... – user2379000