【问题标题】:SQL inner join getting all data in columnSQL内部连接获取列中的所有数据
【发布时间】:2016-05-06 15:17:47
【问题描述】:

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

我有两张桌子。

这是我的第一个名为 members 的表

这是我的另一张桌子,叫做捐款。成员的用户 ID 与捐赠表上的用户 ID 相关联。

是的,所以我要做的是从成员和捐赠表中选择所有数据,并将每个 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 布尔值

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

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

我认为我在这里做错了!='' 捐款金额是小数,我的目标是正确的吗?

【问题讨论】:

  • 您有 members.fisrname,列名有错误,请在查询中使用 members.firstname,因为我看到您的数据库表
  • 感谢您的回复修复了拼写错误。仍然收到错误认为该错误是由 sql 引起的
  • 打印您的查询并直接在phpmyadmin中尝试,看看它是否有效
  • 数量是varchar 属性吗?这很奇怪,我希望是decimal。如果是decimal(或任何其他数字数据类型),为什么要将其与空字符串进行比较?
  • 我认为您在连接中的 where 子句中可能有错误。什么类型的字段是donation.amount?您将其称为字符串。尝试在donations.amount不为空的地方做

标签: php mysql sql inner-join


【解决方案1】:

您在列名 'fisrname' => 'firstname' 中有错字。 首先在 phpmyadmin 或其他工具中检查查询。 还可以阅读 mysqli_error 以及其他访问数据库的方法(如 PDO、Doctrine 等)。

【讨论】:

  • 感谢您的回复修复了拼写错误。
【解决方案2】:

在您的查询中将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 布尔值

为了防止错误,添加一个简单的 if 案例,因为你的 while。

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

【讨论】:

  • 感谢您的回复,您能看看我更新的代码吗?
  • 我只是取回名字和姓氏。我认为我的捐款金额目标错误?它是一个小数
  • 不,那是因为你在做SELECT members.firstname, members.lastname ,因此,你只是从数据库中检索名字和姓氏。是否也要选择金额?
  • 是的,这就是我想要做的,如果有意义的话,我会得到最后一个名字和与该用户 ID 相关联的捐款金额?
  • 非常感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多