2012-08-08 68 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