Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Запрос на выборку данных

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: WHERE OR AND
alsio
Отправлено: 27 Января, 2016 - 16:43:43
Post Id


Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)

[+]


Что-то уже голова не соображает. Как правильно сделать запрос? Нужно текущую информацию сравнить с "черным списком" и при наличии совпадений вывести алерт.

В "черном списке" есть поля: адрес, телефон 1, телефон 2, телефон 3.
В текущей форме: адрес, телефон 1, телефон 2

PHP:
скопировать код в буфер обмена
  1. $blacklistsql = mysql_query ("SELECT blacklist_id FROM blacklist WHERE blacklist_adress='".$row['adress']."' OR (blacklist_onetel='".$row['onetel']."' OR blacklist_onetel='".$row['twotel']."' OR blacklist_twotel='".$row['onetel']."' OR blacklist_twotel='".$row['twotel']."' OR blacklist_threetel='".$row['onetel']."' OR blacklist_threetel='".$row['twotel']."')");
  2. $blacklist = mysql_fetch_array($blacklistsql);
  3. if($blacklist["blacklist_id"]<>""){$blacklist="<a href=\"../blacklist/blacklist_update.php?upd=".$blacklist["blacklist_id"]."\" target=\"_blank\"><span class=\"red\">NB! Клиент в черном списке!</span></a>";}


Если убрать сравнение по телефонам и сравниваем только по адресу - все ОК, если добавляем по телефонам - постоянно выводит совпадение (даже если не совпадает).
 
 Top
re_nat
Отправлено: 27 Января, 2016 - 18:17:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 198
Дата рег-ции: Март 2012  


Помог: 5 раз(а)




Смотря, что Вам нужно. Если требуется проверить наличие записей, у которых совпадает адрес и хотя бы один из телефонов, то:

... WHERE адрес AND (телефон1 OR телефон2 OR телефон3)
 
 Top
alsio
Отправлено: 27 Января, 2016 - 19:37:59
Post Id


Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)

[+]


Проверить любое совпадение. Или адрес, или телефоны. По-идее везде должно быть OR, как в моем примере. Но так постоянно выводит совпадение (даже если не совпадает).
 
 Top
Panoptik
Отправлено: 27 Января, 2016 - 20:10:08
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




ответ хранится в пустых значениях

подсказка: что будет если в одном из полей черного списка не будет данных, к примеру телефон3 будет пустым и на вход для проверки придет только один номер телефона а второй будет пустым

соответственно

искомый_телефон = ""
телефон из черного списка = ""
"" == "" => что будет?


-----
Just do it
 
 Top
alsio
Отправлено: 28 Января, 2016 - 16:43:23
Post Id


Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)

[+]


Вот спасибо! Действительно! Отсечку пустых полей сделаю, а в остальном значит правильно, через OR?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB