@Xen_OS

Как подготовить запрос SQL в PHP?

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

public static function searchItem($query) {

        $db = Database::getConnection();
        $sql = 'SELECT * FROM items WHERE item_name LIKE %:query%';

        $result = $db->prepare($sql);
        $result->bindParam(':query', $query, PDO::PARAM_STR);
        $result->setFetchMode(PDO::FETCH_ASSOC);
        $result->execute();

        return $result->fetchAll();
    }
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
- $sql = 'SELECT * FROM items WHERE item_name LIKE %:query%';
+ $sql = 'SELECT * FROM items WHERE item_name LIKE :query';
- $result->bindParam(':query', $query, PDO::PARAM_STR);
+ $result->bindParam(':query', '%'.$query.'%', PDO::PARAM_STR);

И проверьте свой PDO::ATTR_ERRMODE. Должен быть PDO::ERRMODE_EXCEPTION
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
supervaleha
@supervaleha
Web-development
Попробуйте добавить кавычки вокруг %.....%.

Вот так:
$sql = 'SELECT * FROM items WHERE item_name LIKE "%:query%"';
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы