在我的表中有一个名为grad_under的列
graduate=0
undergraduate=1现在,我只能选择研究生或本科生,如果用户选择两个(全部),我如何可以将两个值放在一个变量中,这样我就可以同时获取研究生和本科生?
<select name="gradunder" id="gradunder">
<option value="1">Graduate</option>
<option value="0">Undergraduate</option>
<option value="" selected="selected">Both</option>
</select>这是我用来获取行的MySQL查询。任何帮助都将不胜感激。
$result2 ="SELECT * FROM curriculumcourses
NATURAL JOIN courses
WHERE semester_ava='$avalablesemster'
AND curriculum_id IN (
SELECT curriculum_id
FROM curriculum
WHERE '".$coursneededdate."' BETWEEN startdate AND enddate and grad_under='".$gradunder."')";发布于 2015-04-19 09:22:21
如果所选选项为空(均为空),则跳过最后一个AND部件
$result2 ="SELECT
*
FROM
curriculumcourses NATURAL
JOIN courses
WHERE semester_ava = '$avalablesemster'
AND curriculum_id IN
(SELECT
curriculum_id
FROM
curriculum
WHERE '".$coursneededdate."'
BETWEEN startdate AND enddate ";
if(!empty($gradunder)){
$result2 .=" AND grad_under = '".$gradunder."'";
}
$result2 .=")";另外,使用JOIN而不是子查询更好。
发布于 2015-04-19 09:31:16
<?php
$str='';
if($gradunder==''){
$str=" ('1','0') ";
}
else{
$str=" ('".$gradunder."') ";
}
$result2 ="SELECT * FROM curriculumcourses "
."NATURAL JOIN courses "
."WHERE semester_ava='$avalablesemster' "
."AND curriculum_id IN ( "
." SELECT curriculum_id "
." FROM curriculum "
." WHERE '".$coursneededdate."' BETWEEN startdate AND enddate and grad_under IN '".$str."')";
?>发布于 2015-04-19 09:23:09
如果只有两个值(grad或not),那么为什么不只是将“和grad_under =.”连接起来呢?如果查询字符串的值不是“两者”?
https://stackoverflow.com/questions/29727959
复制相似问题