Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从另一个选择结果中选择mysql和php_Php_Mysql - Fatal编程技术网

如何从另一个选择结果中选择mysql和php

如何从另一个选择结果中选择mysql和php,php,mysql,Php,Mysql,我试图解决这个问题,但它不起作用 我有两张桌子“课程”和“课程通行证” 如果当前用户是否通过了课程,我想检查课程中的每个课程 因此,我需要从每个结果的课程表中进行选择,以检查每个结果的“课程通过”和“状态” CREATE TABLE `lessons` ( `id` int(10) unsigned NOT NULL auto_increment, `title` varchar(255) NOT NULL, `cat_id` int(10) default NULL, PRIM

我试图解决这个问题,但它不起作用

我有两张桌子“课程”和“课程通行证”

如果当前用户是否通过了课程,我想检查课程中的每个课程

因此,我需要从每个结果的课程表中进行选择,以检查每个结果的“课程通过”和“状态”

CREATE TABLE `lessons` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `title` varchar(255) NOT NULL,
  `cat_id` int(10) default NULL,
  PRIMARY KEY  (`id`)
) 



CREATE TABLE `lessons_pass` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `user_id` int(11) default NULL,
  `lesson_id` int(11) default NULL,
  `status` int(11) NOT NULL default '2',
  PRIMARY KEY  (`id`)
)
我当前的代码对我不起作用

<?
$user_id = 4;
$sql = "SELECT id, title, cat_id FROM lessons";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  // output data of each row
  while($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    $lesson_id  = $row["id"];
  
    // my try for the next table
  
    $sql_two = "SELECT * FROM lessons_pass where user_id='$user_id' and lesson_id='$lesson_id' ";
    $result_two = $conn->query($sql_two);
    if ($result_two->num_rows > 0) {
      while($row_two = $result_two->fetch_assoc()) {
        echo "id: " .$lesson_id . " - Status For user : " . $result_two["status"]. "<br>";
      }
    } else {
      echo "0 results";
    }
  }
} else {
  echo "0 results";
}


?>

您似乎正在寻找一个
加入

select l.*, lp.status
from lessons l
left join lessons_pass lp 
    on  lp.lesson_id = ll.id
    and lp.user_id = ?

您没有告诉给定用户没有参加的课程的结果:这将返回一个状态为
null
的行。如果您不想这样做,那么使用
内部连接
而不是
左连接

根据@GMB query,您的PHP代码可能是下一个:

<?php
$user_id = 4;
$conn = $mysqli;
$sql = "SELECT 
    `l`.`id` `lesson_id`,
    `l`.`title` `lesson_title`,
    `u`.`firstname`,
    `u`.`lastname`,
    IFNULL(`lp`.`status`, 'not pass') `status`
FROM `lessons` `l`
LEFT JOIN `lessons_pass` `lp` 
    ON `lp`.`lesson_id` = `l`.`id` AND `lp`.`user_id` = " . (int)$user_id 
." LEFT JOIN `users` `u` ON `lp`.`user_id` = `u`.`id`";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
  // output data of each row
    while ($row = mysqli_fetch_assoc($result)) {
        echo "Lesson ID: " . $row["lesson_id"]
            . " Lesson title: {$row['lesson_title']}"
            . " Name: " . $row["firstname"]. " " . $row["lastname"]
            . " Status: {$row['status']}"
            . "\n";
    }
} else {
  echo "0 results";
}

我想要所有课程的列表(从“课程”表中),对于每一个课程,我将获得“状态”@user3056538:这就是查询的作用。请根据您的数据进行尝试(您只需要将
替换为用户id)。