使用与成员标识相关的PHP连接多个表

时间:2013-05-29 10:17:49

标签: php sql join mysqli

我真的希望你可以通过使用php来解决JOIN问题,因为我真的很难接受它的工作方式。

基本上我有2张桌子,一张是高级会员,另一张是这些会员的粉丝。所以我想从“高级”表中获取某些成员($memberid)是粉丝的信息。

Premium = id, name, avatar, town, etc, etc
Fans = fan($memberid), fanee(Premium 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>

    ";

}
?>

这是返回其他条件所以我的JOIN行一定有问题 - 任何人都可以指出我正确的方向。

1 个答案:

答案 0 :(得分:1)

您已经说过列'id'是不明确的,这是因为您的查询中引用了两个带有'id'列的表,并且MySQL不知道选择哪个。您可以通过添加如下表格来具体说明:

SELECT premium.id, ...

此外,您需要mysqli_num_rows()而不是mysqli_affected_rows()。由于您的查询不会影响任何行(例如更新,删除,插入),而是返回一组行。

mysql_num_rows()将查询结果作为其参数(在您的情况下为$get_connections_res)而不是连接。为了确保结果有效,首先在if之前检查$ get_connections_res的值...如果它是假的,那么查询中就会出错。使用mysqli_error()报告错误。