Проблема с PHP «mysqli_query» при поиске в базе данных с использованием пользовательского ввода текста - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь запросить в моей базе данных SELECT на основе ввода текста.Если я вручную ввожу строку, она запрашивает правильно и возвращает ожидаемые строки.Однако, если я использую переменную, в которой я хранил строку, она не вернет никаких строк из моей базы данных.Может кто-нибудь взглянуть на этот код и поделиться своими идеями по этому вопросу?Я извиняюсь, но я новичок в PHP, и я просто пытаюсь заставить простую таблицу обзора отображаться правильно.

У меня есть поисковый ввод, где пользователь вводит в поиске в этом формате: "name, адрес, город, штат ".Я использовал функцию explode (), чтобы разделить входные данные на каждый компонент и назвал каждый из них: $ name, $ address, $ city, $ state.Я включаю код, где все перестает работать.

$searchWords = explode(",", $text);
$address = $searchWords[1];
$name = $searchWords[0];
$city = $searchWords[2];
$state = $searchWords[3];

Когда я вызываю gettype () для каждой переменной, результатом является 'строка', и ожидаемые строки выводятся на экран.Вот код, с которым у меня возникают проблемы:

$display = mysqli_query($conn, "SELECT * FROM reviews WHERE address1 LIKE '%$address%'");

Если я вручную установлю $ address = '123 Pokemon St' или любую строку, а затем использую $ address в запросе, он работает правильно.Но если я попытаюсь использовать $ address в том виде, как он есть после первоначального определения, он не будет работать.Я пытался привести каждое значение к строке, но это не сработало.

Я знаю, что могу найти эту информацию где-то в документации PHP, но я уже потратил несколько часов на ее поиск, но безрезультатно.,Мне нужно закончить мой проект сегодня, поэтому любая помощь очень ценится:)

1 Ответ

0 голосов
/ 21 мая 2019

я думаю, что ваша проблема с пробелами.так как формат

name, address, city, state

, что приведет к этим значениям

// example of $text = "Donnie, Pokemon Street, Denver, Colorado"
$searchWords = explode(",", $text);
$address = $searchWords[1] // "Donnie";
$name = $searchWords[0]; // " Pokemon Street"
$city = $searchWords[2]; // " Denver"
$state = $searchWords[3]; // " Colorado"

, вы можете попробовать обрезать разнесенные значения перед передачей их в запрос?

$address = trim($searchWords[1]); // "Donnie"
$name = trim($searchWords[0]); // "Pokemon Street"
$city = trim($searchWords[2]); // "Denver"
$state = trim($searchWords[3]); // "Colorado"

надеюсь, это поможет!

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