Я использую PDO с PHP для отправки запросов на мой SQL-сервер. Мне нужно использовать LIKE условие, чтобы проверить имя пользователя, чтобы убедиться, что это разрешено (например, она не содержит каких-либо запрещенных слов), поэтому я использую этот SQL запрос ...SQL throwing Синтаксис Ошибка при использовании LIKE с параметрами
SELECT * FROM `table` WHERE (`name` LIKE %?%);
Я затем вставить с PDO в параметре позже, как это ...
$statement->bindParam(1, $username)
когда я пытаюсь запустить это, я получаю эту ошибку ...
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '%'dibdibs'%)' at line 1' in C:\xampp\htdocs\scripts\sql.php:57 Stack trace: #0 C:\xampp\htdocs\scripts\sql.php(57): PDOStatement->execute() #1 C:\xampp\htdocs\api\users.php(30): dibdibs\pdo->query('SELECT * FROM `...', Array) #2 {main} thrown in C:\xampp\htdocs\scripts\sql.php on line 5
код PDO отлично работает для других запросов, когда я используя вместо этого =
f LIKE
, но это бросает вышеуказанную ошибку, когда я пытаюсь использовать предложение LIKE
.
Я установил полный код на Pastebin, если вам нужно его проверить. Я использую GET для получения данных, поскольку я использую это с AJAX (который также работает нормально), но имя пользователя, которое я попробовал, это «dibdibs», который отлично работает в других запросах.
Используйте 'имя LIKE? ', А затем связать что-то вроде этого' $ Оператор-> bindParam (1, «% $ username% ")' –
imo, всегда имеет местозаполнитель, окруженный пробелами. Это дает понять программисту и синтаксическому анализатору, что это единственный токен. И облегчает ли чтение кода? –