Выборка полей

  • Автор темы Автор темы $lider
  • Дата начала Дата начала

$lider

Бывает
Выборка полей

Привет всем!
У меня проблема:
есть поле со значениями типа 14,11,18... через запятую.
Мне надо создать запрос, при котором база вернет поля где встречается например 11(мне надо точное совпадение).
Я так пробую
SELECT * FROM `users` WHERE `subscribe` LIKE '%$nomer%'
Но это ведь не правильно.
Я могу конечно через explode(",", результат поля)
но это второй запрос к базе.
Может мона по другому????
 
SELECT * FROM users WHERE LOCATE(',11,', concat(',',subscribe,','))>0;
Будет работать быстрее чем LIKE (правда ненамного)
И еще правильно будет работать только при условии что в поле нет пробеловм между запятыми и цифрами
 
Спокойно Маша..(упс то есть $lider) я Дубровский...
ты конструкцию concat видишь?
Ну вот ее назначение - добавить перед первым и после последнего числами - запятые (на время сравнения).
Вообще ты бы попробовал командир, прежде чем критиковать
 
Пасиба, разабрался, все воркает.
Теперь надо наоборот :)
Есть массив $subscribe -->Array ( [0] => 14 [1] => 11 [2] => ...)
Есть переменная $id=11
Нужно чего-то типа
if (один из элементов $subscribe==$id)
{....}
else
{....};
Вот как такое юзать?
 
1. После } точек с запятыми не нужно.
2. Может все таки почитаем мануал на досуге?

[m]in_array[/m]
или сам в цикле (- не советую.)
 
2. Может все таки почитаем мануал на досуге?
Очень хорошо что ссылку дал, пасиба!
PHP:
$subscribe=explode(',',$myrow[subscribe]);
$subscribe -->Array ( [0] => 14 [1] => 11 [2] => ...) 
if (in_array ($id, $subscribe, TRUE))
$link="Unsubscribe";
 
И апаследний питання:
из поля в базе 14,11,18... надо удалить например 14.
Тоже можно через массив пойти а потом UPDATE `users` SET `subscribe`=???
(ну рассылку я пишу;)
 
А может мне использовать
UPDATE `users` SET `subscribe`='' WHERE LOCATE(',11,', concat(',',subscribe,','))
 
Наверное средствами MySQL никак, прейдется одним запросом считывать, вырезать php, потом вторым запросом записывать???
 
Можно попробовать одним запросом.. но нужно ли...?
решать надо исходя из поставленной задачи.
Запрос примерно такой
PHP:
UPDATE users 
SET subscribe=REPLACE(concat(',',subscribe,','),',11,',',')
WHERE LOCATE(',11,', concat(',',subscribe,','))
 
Ну я зделал, одно замечание, число улетело, а его запятая осталась :(
 
$lider - мне может за тебя вообще все сделать? че ты напрягаешься? я вообще могу.. и даже больше.
Понимаешь к чему я?
К тому что здесь лишь указывают направление... по которому надо идти, но за других не ходят.
 
Сверху