SQL-поиск изменен с равных на неработающие

php/sql новичок Попытка изменить поиск имени LIKE на точный поиск. Не удается найти какие-либо записи, даже если используются значения поиска, которые, как я знаю, находятся в таблице.

Оригинальный код:

 $sch = "SELECT record_key, surname, given_names, birth_date, death_date, age
               FROM records
               WHERE surname LIKE '".addslashes($name)."%';
    $result = mysql_query($sch);

Новый код:

 $sch = "SELECT record_key, surname, given_names, birth_date, death_date, age
               FROM records
               WHERE surname = '".addslashes($name)."%';
    $result = mysql_query($sch);

Я перепробовал все, что могу придумать, в том числе:

 WHERE surname = 'addslashes($name)';

(Я не был уверен в причине для каждого конца или%)

Единственный способ заставить его работать - это удалить аддлэш и просто использовать: WHERE surname = '$name';

который я понимаю, уязвим для инъекций.

4 ответа

Решение

Пытаться:

 $sch = "SELECT record_key, surname, given_names, birth_date, death_date, age
               FROM records
               WHERE surname = '".addslashes($name)."'";
    $result = mysql_query($sch);

без %,

% подстановочный знак в LIKE шаблоны, но это обычный персонаж в = из них.

Попробуйте правильно завершить строку запроса двойными кавычками:

$sch = "SELECT record_key, surname, given_names, birth_date, death_date, age
 FROM records
 WHERE surname LIKE '".addslashes($name)."%'";

Ты можешь использовать % с LIKE Клаус, просто измени свой код, как показано ниже...

$sch = "SELECT record_key, surname, given_names, birth_date, death_date, age
               FROM records
               WHERE surname = '".addslashes($name)."';
    $result = mysql_query($sch);

Трейлинг % что у вас есть в вашем LIKE пункт присутствует в вашем точном поиске. % имеет значение только при использовании LIKE, поэтому он ищет точное соответствие того, что вы проходите, но с % в конце.

LIKE 'criteria%' найдет все, что начинается с criteria

= 'criteria%' будет точно соответствовать этому литералу, включая%.

Другие вопросы по тегам