SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 26.02.2010 08:56:12

Demokrat
Участник
Зарегистрирован: 26.02.2010
Сообщений: 7

Помогите с запросом (поле в БД равно нескольким значениям)

Как выяснилось совсем не знаю MYSQL. Мне нужно выбрать из таблицы значения где поле "cat" равно нескольким переменным. Т.е.

$result = mysql_query("SELECT * FROM users WHERE cat =  ($cat1,$cat2,$cat3,$cat4,$cat5,$cat6,$cat7,$cat8,$cat19,$cat11,$cat13,$cat14,$cat15,$cat21,$cat22,$cat23)  AND activation='1' AND cat > '0'",$db);

Привел эту глупость т.к. тут вроде понятно чего я хочу. Заранее благодарен.

Неактивен

 

#2 26.02.2010 08:58:00

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Помогите с запросом (поле в БД равно нескольким значениям)

Используйте IN вместо =

... WHERE cat IN (2,3,4,5);

Неактивен

 

#3 26.02.2010 08:59:56

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите с запросом (поле в БД равно нескольким значениям)

SELECT * FROM users WHERE cat IN  ($cat1,$cat2,$cat3,$cat4,$cat5,$cat6,$cat7,$cat8,$cat19,$cat11,$cat13,$cat14,$cat15,$cat21,$cat22,$cat23)  AND activation='1' AND cat > '0';

Неактивен

 

#4 26.02.2010 09:04:18

Demokrat
Участник
Зарегистрирован: 26.02.2010
Сообщений: 7

Re: Помогите с запросом (поле в БД равно нескольким значениям)

rgbeast написал:

Используйте IN вместо =

... WHERE cat IN (2,3,4,5);

А для этого поле CAT должно быть INTElenger ?

Неактивен

 

#5 26.02.2010 09:07:49

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите с запросом (поле в БД равно нескольким значениям)

нет

Неактивен

 

#6 26.02.2010 09:15:37

Demokrat
Участник
Зарегистрирован: 26.02.2010
Сообщений: 7

Re: Помогите с запросом (поле в БД равно нескольким значениям)

Не работает.
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in X:\home\localhost\www\acteri\casting.php on line 243

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in X:\home\localhost\www\acteri\casting.php on line 252

Дело в том что переменные эти - это выбор флажков в форме. И по результату выбора определенным группам участников рассылается инфа в цикле. Поэтому мне и нужно чтобы выборка делалась по этим переменным. Застрял на этом на два дня. Всё перепробовал. С INT тоже пробовал. Может есть другое какое решение?

Неактивен

 

#7 26.02.2010 09:18:59

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Помогите с запросом (поле в БД равно нескольким значениям)

См. FAQ номер 2 и приведите код ошибки

Неактивен

 

#8 26.02.2010 09:38:10

Demokrat
Участник
Зарегистрирован: 26.02.2010
Сообщений: 7

Re: Помогите с запросом (поле в БД равно нескольким значениям)

rgbeast написал:

См. FAQ номер 2 и приведите код ошибки

Вставил этот код в скрипт: $result = mysql_query($sql) or die(mysql_error());

Туплю уже, но выдаёт следующее:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in X:\home\localhost\www\acteri\casting.php on line 243
Query was empty

Неактивен

 

#9 26.02.2010 09:45:08

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите с запросом (поле в БД равно нескольким значениям)

Этот код вставлять в скрипт не надо. Это пример того, как добавить обработку ошибок. В вашем случае имена переменных могут быть совсем другие. Там где у вас идет выполнение запроса нужно добавить or die(mysql_error()

Неактивен

 

#10 26.02.2010 09:55:39

Demokrat
Участник
Зарегистрирован: 26.02.2010
Сообщений: 7

Re: Помогите с запросом (поле в БД равно нескольким значениям)

$result = mysql_query("SELECT * FROM users WHERE cat = $cat3 AND activation='1' AND cat > '0' or die(mysql_error()",$db);

Типа так? Забыл поблагодарить. Спасибо что помогаете.

Неактивен

 

#11 26.02.2010 09:58:18

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Помогите с запросом (поле в БД равно нескольким значениям)

Нет, нужно так:
$result = mysql_query("SELECT * FROM users WHERE cat = $cat3 AND activation='1' AND cat > '0' ",$db) or die(mysql_error());

И сделать это для всех запросов, иначе смысл ошибки не узнаете.

Неактивен

 

#12 26.02.2010 10:35:43

Demokrat
Участник
Зарегистрирован: 26.02.2010
Сообщений: 7

Re: Помогите с запросом (поле в БД равно нескольким значениям)

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ',,,,,,,,,,,) AND activation='1' AND cat > '0'' at line 1

Ну конкретно на этот запрос вот эта ошибка выскакивает. Ни черта не понимаю о чем это.

Неактивен

 

#13 26.02.2010 10:41:04

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Помогите с запросом (поле в БД равно нескольким значениям)

У Вас половина переменных $cat19,$cat11,$cat13 просто пустые, а запятые в запросе стоят, поэтому запрос получается синтаксически неверным - несколько запятых подряд. Заключите их в одиночные кавычки, чтобы ошибки не было, но вообще говоря надо это приложение переписать современными средствами (использовать массив вместо многих переменных, использовать цикл для формирования запроса).

('$cat8','$cat19','$cat11','$cat13','$cat14','$cat15','$cat21','$cat22','$cat23')

Неактивен

 

#14 26.02.2010 11:01:58

Demokrat
Участник
Зарегистрирован: 26.02.2010
Сообщений: 7

Re: Помогите с запросом (поле в БД равно нескольким значениям)

Спасибо большое кажется заработало. У меня и было через массив сделано. Но не хватает знаний MySql. Не знал как запрос на массив сделать. Потому и разжевал. Искал ошибку. Бессонная ночь долой. А цикл у меня следом идет. Там рассылка. Впервые на форум обращаюсь, до этого всё в чужих топиках искал. Еще раз спасибо, может кому эта темка поможет, я подобной за всю ночь не нашел в нете. Там ошибочка есть
Вместо or die(mysql_error();
Нужно or die(mysql_error());
А еще лучше через print или echo - они не останавливают скрипты.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson