Использовать переменную PHP в запросе SELECT LIKE - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь выполнить запрос mysqli, используя следующий код:

$sql = "SELECT * FROM `table` WHERE `description` LIKE ('AB CD %')";
$result= mysqli_query($con, $sql) or die(mysqli_error());

, и этот запрос дает мне 6 результатов.Он будет искать только такие элементы, как «AB CD EF ...», а не такие элементы, как «AB CDEF ...», и это именно то, что я хочу.Но если я передам значению LIKE переменную, подобную этой:

$var = "AB CD ";
$sql = "SELECT * FROM `table` WHERE `description` LIKE ('$var%')";
$result= mysqli_query($con, $sql) or die(mysqli_error());

, это даст мне нулевой результат.

Я пробовал также несколько форматов LIKE, таких как ...('".$var."%')"; или CONCAT($var, '%'),но ничего.

Как получить те же результаты, что и первый запрос, используя переменную, как во втором запросе?

Переменная get получает запрос, который выберет все элементы description изатем, внутри цикла while, он будет искать первые заглавные буквы каждого элемента:

$name = $row['description'];
$expr = '/[A-Z]*/';
preg_match_all($expr, $name, $res);
$var = implode(' ', $res[0]);

Каждая строка имеет значения типа «AB CD EF, что-то еще, не заглавные буквы»

Спасибо.

Ответы [ 3 ]

0 голосов
/ 24 ноября 2018

Использование:

$var = "AB CD ";
$sql = "SELECT * FROM `table` WHERE `description` LIKE '".$var."%'";

Но это плохая практика и очень уязвимая, используйте вместо этого подготовленное утверждение: http://php.net/manual/en/book.pdo.php

0 голосов
/ 24 ноября 2018

Ну, пользователь3783243 обнаружил проблему.Когда я взрываю массив, чтобы получить $ var в строке, по какой-то причине я не могу объяснить, были включены элементы массива (многие из них), которые не имели значения.Решением было взорвать $ var, передать его через функцию array_filter, удалить пустые элементы и снова взорвать его.Спасибо всем.

0 голосов
/ 24 ноября 2018

Как насчет этого после переноса переменной в фигурные скобки {}?Также я только что удалил лишние скобки () после LIKE :)

$var = "AB CD ";
$sql = "SELECT * FROM `table` WHERE `description` LIKE '{$var}%'";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...