поиск php mysql по первой букве - PullRequest
1 голос
/ 19 апреля 2011

У меня есть каталог членов в базе данных mysql. Я хочу, чтобы пользователи могли выполнять поиск по имени или фамилии. В настоящее время у меня есть код, который позволяет искать по начальной букве, но вызывает любое имя, в котором есть буква, независимо от того, является ли она первой буквой или нет. Как настроить этот параметр, чтобы он возвращался только в том случае, если первая буква названия веера совпадает с выбранной?

$sql="SELECT ID, FirstName, LastName FROM stafftest WHERE FirstName LIKE '%" . $letter . "%' OR LastName LIKE '%" . $letter ."%'";

Ответы [ 3 ]

2 голосов
/ 19 апреля 2011

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

/* $db_connection is assumed to be a mysqli connection resource */

$query = $db_connection->prepare('SELECT ID, 
                                         FirstName, 
                                         LastName 
                                  FROM   stafftest 
                                  WHERE  FirstName LIKE ? 
                                  OR     LastName LIKE ?');
$search = $letter . '%';
$query->bind_param('s', $search);
$query->execute();

Примечание: вам нужно создать переменную PHP со строкой с подстановочными знаками внутри и связать с вместо помещенияподстановочные знаки вокруг заполнителя в запросе.

2 голосов
/ 19 апреля 2011
$letter = mysql_real_escape_string($letter);
$sql = "SELECT ID, FirstName, LastName FROM stafftest WHERE FirstName LIKE '" . $letter . "%' 
OR LastName LIKE '" . $letter ."%'";

Все, что я сделал, это удалил первые знаки%.Знак процента указывает mysql, как заявление, чтобы соответствовать любому символу.По сути, вы говорите ему: «сопоставьте любой символ (ы) (включая начальный и конечный символы) и затем найдите букву L, затем сопоставьте любой символ (ы)»Изменение этого значения на один только% в конце решит вашу проблему.

Кроме того, рекомендуется использовать готовые выражения, если вы можете.Для этого пригодится PDO.

0 голосов
/ 19 апреля 2011

это будет искать, чье имя или фамилия начинается с $letter

"SELECT ID, FirstName, LastName FROM stafftest 
 WHERE FirstName REGEXP '^".$letter."' OR 
       LastName REGEXP '^".$letter."'";

REGEX IN MYSQL
СООТВЕТСТВИЕ РИСУНКОВ В MYSQL

Happy 2 Help:)

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