SQL内连接获取列中的所有数据

时间:2016-05-06 15:17:48

标签: php mysql sql inner-join

这是我第一次使用内连接,所以我很困惑。

我有两张桌子。

First one it: (I've blanked out details)

这是我的第一个名为members

的表

enter image description here

这是我的另一张名为捐款的表格。成员中的userID与捐赠表上的userID相关联。

是的,所以我要做的就是从成员和捐款表中选择所有数据,并用捐赠金额来协调每个Id。因此,如果有意义的话,我想要做的就是回复所有捐赠金额旁边的名字。

这是我目前的代码

$ connect - 包含我的配置

  //Connection info.
  global $connect;


  //inner join
  $sql = "SELECT members.firstname, members.lastname 
  FROM members INNER JOIN   donations ON members.userID = donations.userID WHERE donations.amount !='' ORDER BY members.userID ASC ";

  $result = mysqli_query( $connect, $sql);


  while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){

    $list .= $row["firstname"];
    echo $list;
}

我收到此错误:mysqli_fetch_array()期望参数1为mysqli_result boolean

更新:感谢您的所有帮助,我正在运行SQL查询,只是获取名字和姓氏。

  SELECT members.firstname, members.lastname FROM members INNER JOIN   donations ON members.userID = donations.userID WHERE donations.amount !='' ORDER BY members.userID ASC

我想我在这里做错了什么!=''捐赠金额是十进制的,我的目标是正确的吗?

2 个答案:

答案 0 :(得分:1)

您在列名称中输入了拼写错误' fisrname' => '姓名&#39 ;. 首先在phpmyadmin或其他工具中检查查询。 另请阅读有关mysqli_error以及稍后访问数据库的其他方法(如PDO,Doctrine等)。

答案 1 :(得分:0)

在查询中将members.id替换为members.userID

SELECT members.firstname, members.lastname, donations.amount 
FROM members
INNER JOIN donations ON members.userID = donations.userID
WHERE donations.amount != ''
ORDER BY members.userID ASC

至于SQL错误,因为当查询出现问题或找不到结果时$ result为false

  

mysqli_fetch_array()期望参数1为mysqli_result boolean

为了防止错误,请添加一个简单的if case,因为你的。

if($result){
    while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
       $list .= $row["firstname"];
       echo $list;
    }
}