Множественные запросы SQL — Или команда

#php #sql

#php #sql

Вопрос:

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

Я пытался использовать следующий код, но, похоже, он не работает.

 $sql = ("SELECT order_number, sitestreet FROM  `PropertyInfo` WHERE  `sitestreet` LIKE '%$street%' OR `sitecity` LIKE '%$city%' AND `user` LIKE '$user'");

$result = mysql_query($sql);
  

Я не думаю, что он считывает значение в $ user, потому что он отображает все заказы для всех пользователей.

Как я могу сделать возможным поиск заказа с использованием нескольких значений serach?

Спасибо!

Комментарии:

1. я думаю, что подобное для user должно быть где user = ‘user’ вместо

Ответ №1:

Заключите ваши операторы OR в круглые скобки, чтобы они формировали одно условие верхнего уровня, пользователь — другое условие верхнего уровня:

 $sql = '
  SELECT 
    `order_number`, 
    `sitestreet` 
  FROM  
    `PropertyInfo` 
  WHERE  
     (
        `sitestreet` LIKE "%'.$street.'%" OR 
        `sitecity` LIKE "%'.$city.'%"
     ) AND 
     `user` = '.$user;
  

Также обратите внимание, если вы хотите получить прямое соответствие user столбцу, используйте = вместо LIKE . Я предполагаю, что $user это числовой идентификатор…

Ответ №2:

Как насчет того, чтобы попробовать, например

 $sql = ("SELECT order_number, sitestreet FROM PropertyInfo WHERE (sitestreet LIKE   
      '%$street%' OR sitecity LIKE '%$city%') AND user LIKE '$user'");
  

Ответ №3:

И имеет более высокий порядок приоритета, чем ИЛИ (см. http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html подробнее). Вам нужно заключить ваш оператор OR в круглые скобки, чтобы он оценивался как один оператор, перед оператором AND .

 SELECT order_number, sitestreet 
FROM  `PropertyInfo` 
WHERE  (`sitestreet` LIKE '%$street%' OR `sitecity` LIKE '%$city%') 
AND `user` LIKE '$user'
  

Ответ №4:

Попробуйте:

 $sql = ("
  SELECT order_number, sitestreet 
  FROM  `PropertyInfo` 
  WHERE  (`sitestreet` LIKE '%$street%' 
    OR `sitecity` LIKE '%$city%') 
  AND `user` LIKE '$user'");
  

Вы должны сгруппировать редакторы вместе. То, как это написано, я полагаю, что это читается как «если улица совпадает, игнорируйте любые другие условия (ИЛИ), в противном случае и город, и пользователь должны совпадать.

Также точка зрения G molvi хороша, если вы не ищете соответствие шаблону, используйте =

HTH