2016-02-28 111 views
0

試圖查詢類,教師,課外和學生的主要列表,但是當我運行查詢時,我得不到任何結果。PHP/SQL查詢返回Nothing

//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

'print_r($ student_id);'chk this – devpro

+2

在第一個查詢中,您將學生的ID稱爲「SELECT student FROM」,在第二個查詢中,您使用的是'students.studentid'那麼什麼是正確的領域?您的第一個或第二個查詢是錯誤的。 –

+0

如果查詢在數據庫接口中不起作用,這不是PHP問題,而是SQL/mysql問題。數據庫是什麼樣的,你能提供一個sqlfiddle嗎? – chris85

回答

4
$student_name= $_POST["name"]; 
$studentid= "SELECT student FROM students WHERE name='$name'"; 
$id_query = mysqli_query($dbcon, $studentid); 

您正在尋找的名字$name,但是你只設置了一個名爲$student_name

所以實際上你正在尋找在Students表有name=''值varaible。

而且

WHERE s.studentid='$student_id[0]'"; 

你正在尋找一個studentid列值,但是這是對從studentstudent列中的數據進行檢查。這看起來像試圖用varchar型字符值(student)檢查數字索引字段(studentid)。


進一步瞭解詳細:

你也行WHERE s.studentid='$student_id[0]'";這完全從當前的SQL查詢,取值是:

student表命名student_ids.student_id和您正在查詢的值是$sudent_id[0],它來自查詢上方的查詢student列的值student桌。這意味着你永遠不會找到任何結果,因爲它比較了幾乎肯定包含不同值的兩列。


您是SQL注入敞開這個代碼,這是非常高建議use PDO或以其他方式完全徹底逃避用戶輸入和use prepared statments字符串。

+0

可能還想添加關於SQL注入可能性的註釋。 – chris85

+0

@ chris85是的,這是一個很好的觀點,我將它添加到 – Martin

+0

愚蠢,我發佈後,我意識到語法錯誤。謝謝。 – shelum