尝试查询课程,教师,课外和学生专业的列表但是当我运行查询时,我没有得到任何结果。
//query to get the student ID if user enters "name" on the page
$student_name= $_POST["name"];
$studentid= "SELECT studentid FROM students WHERE name='$student_name'";
$id_query = mysqli_query($dbcon, $studentid);
$student_id= mysqli_fetch_array($id_query);
//should query stuff related to the student.
$sqlstudentquery= "SELECT c.name, c.teacher, e.name, m.name
FROM students AS s
LEFT JOIN classes AS c ON s.studentid = c.stude_id
LEFT JOIN extracurricular AS e ON s.studentid = e.stude_id
LEFT JOIN majors AS m ON s.studentid = m.stude_id
WHERE s.studentid='$student_id[0]'";
$student_data = mysqli_query($dbcon, $sqlstudentquery);
当我输入搜索词时,页面将尝试加载但不会返回任何数据。我试图在数据库上手动输入查询,但它返回一个空查询。我应该使用内连接而不是左边?
编辑:发布此内容后,我确实在我的php中发现了语法错误。我修好了。 SQL查询仍然无法正常工作。
edit2:sql查询现在有效了。
答案 0 :(得分:4)
$student_name= $_POST["name"]; $studentid= "SELECT student FROM students WHERE name='$name'"; $id_query = mysqli_query($dbcon, $studentid);
您正在寻找名称$name
,但您只是设置名为$student_name
因此,您实际上在Students
表中查找具有name=''
的值。
另外
WHERE s.studentid='$student_id[0]'";
您正在查找studentid
列值,但会根据student
表中student
列的数据对其进行检查。这看起来像您尝试使用varchar类型字符值(studentid
)检查数字索引字段(student
)。
更多详情:
你有一行WHERE s.studentid='$student_id[0]'";
完全取得当前SQL查询的值:
student
的 student_id
表格列是 s.student_id ,您要根据值$sudent_id[0]
检查此值,该值来自上面的查询值student
表格中的student
列。这意味着你将永远找不到任何结果,因为它正在比较几乎肯定包含不同值的两列。
您对此代码的SQL注入非常开放,强烈建议您use PDO或完全彻底地从用户输入和use prepared statments转义字符串。