2015-04-12 36 views
0

请原谅我,如果我觉得这很难解释。 目前代码正在工作,但是现在我想要做的是执行相同的任务,但同时执行更多任务,例如,Task1内部的Task2。PHP - 在where子句中选择多个变量

我认为这将是可能的通过在SQL内使用'IN'语句。因此,通过这样做:

$sql1 = "SELECT * FROM task where task IN ('$FirstTask', $SecondTask');"; 

我希望这将然后插入正确的数据,周一和周二上午的任务,但是当我打印$一个I得到的值0,所以我不认为这是正确的方式去做。 我能想到的唯一方法就是重复整个过程,稍微改变变量名以适应当天,是否有更好的方法来做到这一点?希望你会明白,如果没有,我可以添加更多的信息。

编辑:如果我尝试使用:

select * from task where task IN ('$FirstTask', '$SecondTask', '$ThirdTask', '$ForthTask');"; 

这打印出我想要的数据,但是如果他们中的一个任务内的价值在于它与选择弄乱相同。 例如

mysql> select id,task from task where task IN ('Task1', 'Task2', 'Task11', 'Task12'); 
+-------+------------+ 
| am_id | am_task | 
+-------+------------+ 
|  1 | Task1  | 
|  2 | Task2  | 
| 11 | Task11  | 
| 12 | Task12  | 
+-------+------------+ 

如果我添加相同的值:

mysql> select id,task from task where task IN ('Task1', 'Task2', 'Task11', 'Task4' 'Task2'); 
+-------+------------+ 
| am_id | am_task | 
+-------+------------+ 
|  1 | Task1  | 
|  2 | Task2  | 
| 11 | Task11  | 
+-------+------------+ 
3 rows in set (0.00 sec) 
+0

'$ tuesday_am_Task'不是'$ tuesd ay_am_task' ... –

+0

谢谢,编辑。 – tom

+0

你错过了一个倒置昏迷的另一件事'IN('$ monday_am_task','$ tuesday_am_Task');' – insanityCode

回答

0

我发现的解决方案是通过使用UNION,例如:

(select id,task from task where id = '12') union (select id,task from task where id='11') union (select id,task from task where id='10'); 

哪然后显示:

+-------+----------------+ 
| id | task    | 
+-------+----------------+ 
| 12 | Task12   | 
| 11 | Task11   | 
| 10 | Task10   | 
+-------+----------------+