2012-08-15 42 views
0

我试图让用户只能查看某些记录,其中查询变量是由用户使用表单给出的。该表单包含一个日期选择器和3个选择元素,用户可以选择多个选项,允许的选项由SQL使用SELECT DISTINCT填充。获取SQL使用选择表单元素,逗号分隔

日期选择工作,但SELECT列表只有在选择一个值时才起作用。我觉得这个问题是由'结果'页面上的错误SQL造成的。我不知道如何使SQL工作用逗号分隔的字符串(例如:用户1,用户2,用户3等,这是我的SQL查询:

SELECT * 
FROM exp_core 
WHERE `time` >= startdate 
AND `time` <= enddate 
AND user LIKE uservar 
AND type LIKE typevar 
AND trnsact LIKE trnsactvar 

uservartypevartrnsactvar是用逗号分隔的表单变量谁知道如何让SQL把这些值作为独立的价值观?

+0

这在MySQL中可完成,但很容易在PHP做。你使用的是PHP吗?如果没有,请查看:http:// stackove rml.com/questions/11691942/mysql-iterate-through-elements-of-a-split-string-and-do-things-with-them?lq=1 – mlishn 2012-08-15 13:13:45

回答

3

多个变量,你必须使用IN操作符。

SELECT * 
FROM exp_core 
WHERE `time` >= startdate 
AND `time` <= enddate 
AND user IN (uservar) 
AND type IN (typevar) 
AND trnsact IN (trnsactvar) 
+0

恐怕不起作用。它仍然显示一切(或没有)。 – 2012-08-15 19:05:45

+1

如果传递的值不是整数,则必须将每个值括在引号中。 – 2012-08-16 06:55:45