Подстановочный знак SQL-запроса - PullRequest
1 голос
/ 09 июня 2011

Есть ли способ выполнить SQL-запрос с использованием подстановочного знака или выполнить поиск с содержанием.

В настоящее время пользователи могут искать адрес в моей базе данных. Используя команду LIKE, они могут искать 123 Fake St. Но есть способ выполнить поиск, используя 123, а затем заставить его отобразить все адреса, в которых есть 123. Пример: Поиск 123 -> Результаты: 123 Fake St, 123 Spooner Ave, 123 Пример Terrace.

Есть ли способ выполнить такой поиск? Мой код для текущей функции поиска приведен ниже: На предыдущей странице пользователь вводит адрес, который он хочет найти, это значение хранится в $ street.

$sql = ("SELECT  sitestreet FROM  `PropertyInfo` WHERE  `sitestreet` LIKE  '$street' AND `user` LIKE '$user'");
$result = mysql_query($sql);

Спасибо!

Ответы [ 7 ]

4 голосов
/ 09 июня 2011

Подстановочный знак sql используется в «%», как в

"SELECT sitestreet FROM PropertyInfo WHERE sitestreet LIKE '%$street%' AND user LIKE '$user'"
2 голосов
/ 09 июня 2011

Попробуйте

$sql = ("
  SELECT sitestreet 
  FROM PropertyInfo 
  WHERE sitestreet LIKE '%$street%' 
    AND user LIKE '$user'"); 
$result = mysql_query($sql)
1 голос
/ 09 июня 2011

Примерно так:

LIKE '%$street%';

Подстановочные знаки: _ (один символ) и % (несколько символов).

1 голос
/ 09 июня 2011
$sql = ("SELECT sitestreet FROM PropertyInfo WHERE sitestreet LIKE '$street%' AND user = '$user'"); 
$result = mysql_query($sql);

Для пользователя я бы не использовал оператор LIKE, но =

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

Создание текста запроса SQL на лету, когда он содержит пользовательский ввод, является отличным способом сделать себя уязвимым для атак SQL-инъекцией.

Для чего-то подобного вам следует создать параметризованный хранимый процесс,выполнит тип поиска, который вы хотите, в приведенном выше примере вы можете назвать его примерно так:

GetSiteStreetByUserAndPartialAddress

Затем вызовите код, который sproc с именем пользователя и предоставленным пользователем значением поиска адреса в качестве параметров

Это гарантирует, что ваш сайт не станет предметом комиксов XKCD о ком-то по имени: bobby ');DROP TABLE Пользователи; - или, в вашем случае, пользователь должен что-то найти в соответствии с

123 Pwned Way'); DROP TABLE PropertyInfo; --
0 голосов
/ 09 июня 2011

Вы должны использовать

SELECT sitestreet FROM PropertyInfo WHERE sitestreet LIKE '%$street' 

или

SELECT sitestreet FROM PropertyInfo WHERE sitestreet LIKE '%$street%' 

http://www.techonthenet.com/sql/like.php

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

Используя ваш запрос выше, это все, что вам нужно ...

SELECT sitestreet FROM PropertyInfo WHERE sitestreet LIKE '%street' AND user LIKE '%user'

Символ% - это подстановочный знак, используемый для нескольких символов. Он вернет записи с ЛЮБЫМИ символами / с до улицы, и то же самое для пользователя.

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