#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