【发布时间】:2019-04-01 08:51:57
【问题描述】:
我正在开发一个系统,这个模块应该回显数据库的内容。
在我添加一些 JOIN 语句之前,它运行良好。
我检查并测试了 SQL 代码,它运行良好。不起作用的是我回显 JOINed 表的内容的那部分。
我的代码如下所示:
$query = "SELECT reg_students.*, courses.*
FROM reg_students
JOIN courses ON reg_students.course_id = courses.course_id
WHERE reg_students.user_id = '".$user_id."'";
$result = mysqli_query($conn, $query);
if (mysqli_fetch_array($result) > 0) {
while ($row = mysqli_fetch_array($result)) {
echo $row["course_name"];
echo $row["course_id"];
course_name 和 course_id 既不回显也不给出任何错误消息。
更新:我实际上需要通过 JOINing 更多表和更改所选列来增加查询复杂性。我需要加入这些表:
tutors 具有列:tutor_id、t_fname、t_othernames、email、phone numberfaculty 具有列:faculty_id、faculty_name、@987654@33 courses 包含以下列:course_id、course_code、course_name、tutor_id、faculty_id
我想在我的原始查询中将这些表加入到reg_students 表中,以便我可以按$user_id 进行过滤,并且我想显示:course_name、t_fname、t_othernames、email、 faculty_name
【问题讨论】:
-
为了向您提供最好的支持,请创建一个 sqlfiddle 演示或至少导出您的表和足够的示例行供我们测试。换句话说,我们希望看到 3 个
CREATE表查询和 3 组INSERT查询,以便我们可以使用您的实际架构/数据。 -
此外,我可以看到一些不太正确的东西...
mysqli_fetch_array($result)不用于计算行数——事实上,您将忽略第一行数据,因为您使用它在if条件下。如果您只对course_name和course_id列感兴趣,请在SELECT中查询。如果您知道它们来自哪个表,请务必指定该表,然后是.,然后是列名。使用mysqli_fetch_assoc()生成关联结果集;fetch_array()包括索引元素和关联元素。 -
您确定要加入
user_info吗?您没有从中选择任何内容,但它可能是对您的查询逻辑的关键检查——我不能确定。
标签: php mysqli inner-join mysqli-fetch-array