-1

我真的希望您可以为我澄清关于使用 php 进行 JOIN 的问题,因为我真的很难接受它的工作原理。

基本上我有两张桌子,一张给高级会员,一张给这些会员的粉丝。所以我想从成员($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>

    ";

}
?>

这是返回 else 条件,所以我的 JOIN 行一定有问题 - 谁能指出我正确的方向。

4

1 回答 1

0

您说过“id”列不明确,这是因为您在查询中引用了两个带有“id”列的表,而 MySQL 不知道该选择哪个。您可以通过添加这样的表名来具体化:

SELECT premium.id, ...

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

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

于 2013-05-29T10:23:01.450 回答