заставить SQL работать с выбранным элементом формы, разделенным запятой

Я пытаюсь разрешить пользователям просматривать только определенные записи, где переменные запроса задаются пользователем с помощью формы. Форма содержит средство выбора даты и 3 элемента выбора, где пользователи могут выбирать несколько параметров, разрешенные параметры заполняются SQL с использованием SELECT DISTINCT.

Выбор даты работает, но список SELECT работает только при выборе одного значения. Я чувствую, что проблема вызвана неправильным SQL на странице результатов. Я не знаю, как заставить SQL работать со строкой, разделенной запятыми (пример: user1, user2, user3 и т. д. Это мой SQL-запрос:

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

uservar, typevar и trnsactvar — переменные формы, разделенные запятыми. Кто знает, как заставить SQL обрабатывать эти значения как отдельные значения?


person Geoffrey Bergman    schedule 15.08.2012    source источник
comment
это можно сделать в mysql, но проще в php. вы используете пхп? Если нет, проверьте это: stackoverflow.com/questions/11691942/   -  person mlishn    schedule 15.08.2012


Ответы (1)


Для нескольких переменных вы должны использовать оператор IN.

SELECT *
FROM exp_core
WHERE `time` >= startdate 
AND `time` <= enddate 
AND user IN (uservar) 
AND type IN (typevar) 
AND trnsact IN (trnsactvar)
person Karan Punamiya    schedule 15.08.2012
comment
Боюсь, это не работает. Он по-прежнему отображает все (или ничего). - person Geoffrey Bergman; 15.08.2012
comment
Если переданные значения не являются целыми числами, вы должны заключить каждое значение в кавычки. - person Karan Punamiya; 16.08.2012