【问题标题】:Joining multiple tables using PHP relating to a member id使用与成员 ID 相关的 PHP 连接多个表
【发布时间】:2013-05-29 10:17:49
【问题描述】:

我真的希望您能帮我解决关于使用 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 行一定有问题 - 谁能指出我正确的方向。

【问题讨论】:

  • 在 if... 之前检查 $get_connections_res 的值如果它是假的,那么查询中有错误。使用mysqli_error报错。
  • 对了,现在是说“字段列表中的列 'id' 不明确”
  • SELECT premium.id ...
  • 谢谢 - 它现在没有返回错误但现在的问题是它没有显示 if 或 else 值
  • 尝试在 if 部分添加一些随机的额外输出,查询可能没有返回任何行,但仍然是有效的查询。

标签: php sql join mysqli


【解决方案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()报错。

【讨论】:

  • 感谢 Phill 指出这一点 - 我已经更改了它,但它仍然没有返回任何值?
  • 它现在是否进入if 而不是else?
  • 不,我认为这一定是 SELECT 中的错误,因为它现在返回错误:警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,对象在 ...
  • 给它你的$get_connections_res而不是$con。
  • 仍然没有变化,但再看一遍,我想我可能把代码倒过来了 - 我有一张连接粉丝的表格,我想根据它获取高级会员信息 - 所以如果会员 a 是高级 a 的粉丝,我想根据连接返回高级 a 的名称、ID、头像和城镇,如果这有意义的话 - 有点像在 facebook 中有一个朋友列表并在你的个人资料上显示他们的头像
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多