我真的希望你可以通过使用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行一定有问题 - 任何人都可以指出我正确的方向。
答案 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()
报告错误。