Всем привет. Пытаюсь вывести нужную мне информацию из БД. В БД есть таблица people с полями id (INT), name и email (VARCHAR). Код (Text): <form action="" method="post"> <table> <tr> <td>Введите имя:</td> <td><input type="text" name="nameses"></td> </tr> <tr> <td colspan="1"><input type="submit" name="knopic" value="Найти"></td> </tr> </table> </form> <?php if (isset($_POST["knopic"])) { $sql = mysqli_query($link, "SELECT * FROM `people` WHERE `name` = {$_POST['nameses']}"); while ($resultses = mysqli_fetch_array($sql)) { echo " {$resultses['name']} {$resultses['email']}<br>"; } } ?> В input вписываю имя, которое хочу найти в БД и нажимаю кнопку "Найти", но ничего не выводится. А если Код (Text): WHERE `name` заменить на Код (Text): WHERE `id` и искать уже по id, то все работает, как надо. Почему не ищется по name?
1 ну нельзя, нельзя непосредственно в запрос что вводит пользователь отдавать. Подготовленные запросы, на крайний случай экранирование 2. При сравнении строк нужны кавычки where name =' vasa' 3 ну и нвкрняка имя неверно вводите, если же совпадение нужно то хотя бы like использовать
Понимаю) Но, я только начинаю изучение и тренируюсь. Все на localhost, безопасно Действительно, забыл про кавычки. Спасибо! Теперь все работает
Да, тут понятно, что дело в кавычках, но все остальное, про что вам написали, обязательно тоже учитывайте! Ну, если не LIKE, то хотя бы предварительный trim делайте для поиска «точных совпадений»
Да, конечно) На самом деле, помимо ответа на вопрос, получить еще и полезный совет, который позволит в дальнейшем избежать проблем - это всегда хорошо Спасибо, буду пробовать разные варианты