简体   繁体   English

PHP中的查询返回null或空值

[英]Query in php returns null or empty value

I wrote the following query: 我写了以下查询:

 $query1 = "SELECT * FROM session WHERE Id_session IN (SELECT * FROM students_in_session WHERE Username = '$email')";
   $res = mysqli_query($conn,$query1);
   $query2 ="SELECT * FROM students_in_session WHERE Username='$email'";
    $res2 = mysqli_query($conn,$query2);
    if (!$res) {
    die(mysqli_error($conn));
 }else{
     while ($row = mysqli_fetch_array($res)) {
       print_r($row);
     $course = $row['Degree'];
     $date = $row['Date'];
     $hour = $row['Hour'];
     $room = $row['Room'];
     }
}
if(!$res2){
    die(mysqli_error($conn));
}else{
    while ($row = mysqli_fetch_array($res2)) {
      print_r($row);
          $prof = $row['Professor'];
        $assis = $row['Assistent'];
    }
}
     return "\n\nDegree: ".$course."\n"."Date: ".$date."\n"."Hour: ".$hour."\n"."Room: ".$room."\n"."Prof: ".$prof."\n"."Assistent: ".$assis;
 }

Currently using phpmyadmin and testing the query returns the expected result,but using the query in the code the variables are all empty. 当前使用phpmyadmin并测试查询会返回预期结果,但是使用代码中的查询,变量都为空。

These are DB's Table: 这些是数据库表:

session 会议

|Id_Session|Date|Hour|Room|Degree|

students_in_session students_in_session

|Id_Session|Code|Name|Surname|Username|Professor|Assistent|

In query1 you are just try to compare Id_session with the whole table you need to compere with the session id only. 在query1中,您只是尝试将Id_session与整个表进行比较,您只需要使用会话ID进行操作即可。

Just replace this 只要更换这个

$query1 = "SELECT * FROM session WHERE Id_session IN 
(SELECT * FROM students_in_session WHERE Username = '$email')";

with

$query1 = "SELECT * FROM session WHERE Id_session IN 
(SELECT Id_Session FROM students_in_session WHERE Username = '$email')";

I thing it will work for you. 我认为它将为您工作。

$query1 = "SELECT * FROM session WHERE Id_session IN (SELECT * FROM students_in_session WHERE Username = '$email')";

In this query you must need to select only one column like 在此查询中,您只需要选择一个列即可

$query1 = "SELECT * FROM session WHERE Id_session IN (SELECT Id_session FROM students_in_session WHERE Username = '$email')";

Check it. 核实。

when you use a IN over a nested query, the nested query can return only one column: 在嵌套查询上使用IN时,嵌套查询只能返回一列:

SELECT * FROM session WHERE Id_session IN 
(SELECT Id_Session  FROM students_in_session WHERE Username = '$email')

However a nested query is not the best approach in your case, because MySQL will have to execute 2 queries. 但是,嵌套查询不是您所用的最佳方法,因为MySQL必须执行2个查询。 You would better do an INNER JOIN : 您最好做一个INNER JOIN:

SELECT S.*
FROM session S 
INNER JOIN students_in_session SS ON SS.Id_Session=S.Id_Session
WHERE SS.Username = '$email'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM