【问题标题】:using JOIN in mysqli only return result from one table在 mysqli 中使用 JOIN 只返回一张表的结果
【发布时间】:2020-06-26 18:01:20
【问题描述】:

我目前正在尝试打印使用 mysqli 连接 2 个表的结果。但每次我尝试这样做时,它只返回一个表的结果,而它正在加入的表不返回任何结果

以下是将数据显示到表格中的代码

    foreach($db->showdata() as $x) {
    					
          if($x['role_id'] == 1 || $x['role_id'] == 2) continue;
          $id = $x['user_id'];
          echo "<tr>";
          echo "<td>" . $x['user_id'] . "</td>";
          echo "<td>" . $x['first_name'] ." ". $x['last_name']. "</td>";
          echo "<td>" . $x['nilai_tugas'] . "</td>";
          echo "<td>" . $x['nilai_uts'] . "</td>";
          echo "<td>" . $x['nilai_uas'] . "</td>";
          echo "</tr>";
                    }

虽然这个是它调用的 showdata() 函数

function showdata(){
$data = mysqli_query($this->db, "SELECT * FROM user LEFT OUTER JOIN grade ON(user.user_id = grade.user_id) IS NOT NULL;");
while($d = mysqli_fetch_array($data)){
  $hasil[] = $d;
}
return $hasil;
}

表的结构是

用户:user_id、first_name、last_name 和其他与这部分无关的列

等级:user_id、nilai_tugas、nilai_uts、nilai_uas

当我运行它返回的代码时

注意:未定义索引:nilai_tugas 注意:未定义索引:nilai_uts 注意:未定义索引:nilai_uas

这是来自成绩表,但来自用户表的数据会通过并显示在页面中。 The page result

当我在 mysql 中运行查询时,它确实返回了我请求的所有数据,但在函数中似乎没有返回数据。

提前谢谢你。

编辑:我尝试将选择查询移动到同一页面并且它可以工作,但当我使用函数返回时它不起作用(这是强制性的)。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    您能否尝试更明确地选择您的列?

    mysqli_query($this->db, "SELECT user.columnname, grade.columnname FROM user LEFT OUTER JOIN grade ON(user.user_id = grade.user_id) IS NOT NULL;");
    

    您确定 users 中的列名为 user_id 吗?因为结果集的列名为 studentID。

    【讨论】:

    • 我添加了成绩但没有任何变化
    • 如果你离开 IS NOT NULL 部分,你会得到结果吗?
    • 无论是否存在IS NOT NULL,它仍然显示与以前相同的结果。
    • SELECT users.*, grades.* FROM users LEFT JOIN grades ON users.id = grades.user_id ORDER BY user.user_name;我认为您不需要 ON 子句后的括号和左连接而不是左外连接。请参阅此示例:w3schools.com/sql/sql_join_left.asp
    • 也试过了,还是不行。我开始倾向于将代码移动到直接显示数据的 PHP 文件,而不是使用函数,即使这可能是一个安全问题(和意大利面条)
    【解决方案2】:

    我不完全知道发生了什么,所以我尝试重新安装 xampp,它终于开始工作了,问题可能出在 mysql 配置文件中(这不是我第一次发生这种情况)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 2021-05-27
      • 2015-01-22
      • 1970-01-01
      相关资源
      最近更新 更多