Настройка поиска SQL - PullRequest
       1

Настройка поиска SQL

0 голосов
/ 14 июня 2011

Я не очень хорош в SQL, и у меня есть простой инструмент поиска zipcode, который я создал для своего сайта. SQL выглядит следующим образом:

$query = "select * from zipcodes2 where ZipCode like \"%$trimmed%\" 

* \ "% $ trimmed% *, конечно, это фактический почтовый индекс, в который вводится пользователь. Он отлично работает, но теперь я хочу сделать его более прогрессивным, позволяя пользователю искать город или штат, а не только почтовый индекс. Я уже столбцы созданы, и они названы "Город" и "Штат". Что именно я должен поместить в строку SQL? Придется ли мне менять какую-либо другую часть кода, в частности \ "% $ trimmed% \ part?

Ответы [ 3 ]

1 голос
/ 14 июня 2011

Это не очень хороший подход, но вы можете приблизиться к тому, что вы хотите, с помощью:

$query = "select * from zipcodes2 where ZipCode like '%$trimmed%' or (CONCAT(City, ',', State) = '$trimmed')"

Но вы должны убедиться, что в ответе пользователя нет пробелов, поэтому он выглядит как Chicago,IL, а не как Chicago, IL или Chicago , IL.

Вы можете сделать это, поставив перед запросом:

$trimmed = preg_replace( '/\s+/', ' ', $trimmed );
1 голос
/ 14 июня 2011

Вы можете попробовать что-то вроде этого:

    select * 
    from zipcodes2 
    where 
    (
       ZipCode like '%$trimmed%'
       OR City like '%City%'
       OR State like '%State%'
    )
0 голосов
/ 14 июня 2011

Вы должны быть в состоянии выполнить, изменив SQL-запрос на что-то вроде:

SELECT * FROM zipcodes2 WHERE ZipCode LIKE \ "% $ trimmed% \" OR (State = \ "$ state_vairable \" ANDCity = \ "$ city_variable \")

Это, конечно, зависит от вашей конечной цели.Вышеприведенный код работает, если вы пытаетесь сопоставить явные комбинации городов и штатов.

Если вы хотите, чтобы люди могли найти почтовые индексы всех мест, называемых "городками" в США, удалите скобки иизмените И на ИЛИ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...