Добрый день. Прошу помощи! Возникли трудности с оператором LIKE. Задача кода заключается в выводе строк из базы данных которые содержат слово вводимое в поисковою строку на странице сайта. Но в моем коде что-то не так. Все данные по таблице в скриншотах во вложении. А вот сам код: PHP: <?php $link = mysqli_connect('localhost', 'root', '', 'eisvbd'); if (!$link) { die('Ошибка подключения (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } echo 'Соединение установлено... ' . mysqli_get_host_info($link) . "\n"; ?> </br> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>PHP searching</title> </head> <body> <form method="post"> <input type="text" name="search" class="search"> <input type="submit" name="submit" value="поиск"> </form> <hr> <?php if(isset($_POST['submit'])){ $search = $_POST['search']; $sql = mysqli_query($link, 'SELECT `ID`, `arteisv`, `nametovar` FROM `eisvtable` WHERE `arteisv` LIKE '%$search%' OR `nametovar` LIKE '%$search%''); while ($result = mysqli_fetch_array($sql)) echo "{$result['arteisv']}: {$result['nametovar']} <br>"; } ?> </body> </html>
@VladimirEIS, LIKE это не хорошо. Для поиска есть родной полнотекстовый поиск MySQL, есть сфинкс, есть эластик.
@Valick, иногда его достаточно, тем не менее. @VladimirEIS. Пользуйтесь кнопкой </> для кода, сделал за вас первый и последний раз. Ваш код не соответствует приведённым сообщениям об ошибке
Если в коде '%$search%' поменять кавычки на `%$search%` то выдает совсем другую ошибку. Скиншот во вложении. Может кто-то сталкивался с такой ошибкой?
@VladimirEIS. Аааа.. не заметил. Прочитайте ещё раз, когда какие кавычки используются в php, и когда какие в mysql.
PHP: $sql = mysqli_query($link, "SELECT `ID`, `arteisv`, `nametovar` FROM `eisvtable` WHERE `arteisv` LIKE '%$search%' OR `nametovar` LIKE '%$search%'"); но! у вас не проверяются и не экранируются данные от пользователя - и соответственно будет 100% успех при SQL инъекциях то есть можно в поле поиска ввести такую строку, которая например уничтожит вашу БД ) P.S ` - это не кавычка, а обратный апостроф так то
Да, спасибо. Я про это тоже читал. Буду разбираться. От этого форума, похоже, нет ни какого толку. Или задача слишком сложная.
@VladimirEIS, это так не работает. Надо быть совсем слабоумным, чтобы брать участников форума на слабо и считать глупее себя тех к кому обращаешься за помощью. Тебе уже сказали про кавычки в запросе, а ты в упор не видишь о каких кавычках речь, потому, что отсутствуют базовые знания. Ну и экранирование должно быть. Давно бы уже переписал код с исправлениями по замечаниям из топика.
Я не беру на слабо и никого не считаю глупее себя. PHP и MYSQL изучаю 4 день. И отвечая на вопрос администратора - да, конечно я ожидал что кто-то поможет в решении задачи. Зачем тогда нужен форум? И тему в разделе выбрал соответствующую.
Ну я вам намекнул, что у вас кавычки неправильные. Дальше - ваша работа. А вообще, на четвёртый день нельзя такое писать. Особенно если опыта в программировании нету. Сначала надо теорию выучить
Спасибо. Поиск по одному слову сделал. Все работает. Вот теперь по нескольким словам уже сложнее. Похоже сегодня придется изучить сфинкс и использовать его.
Обязательно фильтруй % и _ при запросе, иначе логическая уязвимость. Можешь добавить выбор пользователю, где необходимо искать 1 и 2 вариант соответственно.