2012-08-08 41 views
1

有誰知道這是怎麼回事這個查詢嗎?。如果courseIDelective_modulesgroup_elective_modules表中存在,然後打印出所有在group_elective_modules我所試圖做的是。不過,我不斷收到錯誤操作數應包含1列(S)操作數應包含1列(S)的MySQL

這裏是我的查詢

$alternativeEQuery = 
"SELECT elective_modules.courseID,elective_modules.yr 
FROM elective_modules 
WHERE elective_modules.yr = '$year1' 
AND elective_modules.courseID 
NOT IN 
    (SELECT group_elective_modules.moduleID,group_elective_modules.courseName 
FROM group_elective_modules 
WHERE group_elective_modules.courseName = '$courseTitle' 
AND elective_modules.courseID = group_elective_modules.moduleID)"; 

$alternativeEResult = mysql_query($alternativeEQuery) or die($alternativeEQuery."<br/><br/>".mysql_error()); 
+0

你有一個SQL注入攻擊的可能性。 – Joe 2012-08-08 09:39:38

+0

@ Joe.I已經逃脫了上面的代碼中所有變量之前,我將它們作爲一個參數!由於 – user1444442 2012-08-08 09:45:13

+0

的'IN()'運營商如果要使用一個子查詢來提供值預計1列。您不能選擇多於一列。如果你考慮它,這也是合乎邏輯的。 – 2012-08-08 09:46:25

回答

4

你不能在這裏的子查詢兩列:

(SELECT group_elective_modules.moduleID,group_elective_modules.courseName 
FROM group_elective_modules 
WHERE group_elective_modules.courseName = '$courseTitle' 
AND elective_modules.courseID = group_elective_modules.moduleID) 

要麼使用正確的,或添加在第二not in條款,並使用其他列名在那裏。

+0

@ Fluffeh.Cheers !! – user1444442 2012-08-08 09:53:57

相關問題