SQL 将 LIKE 与参数一起使用时抛出语法错误

SQL throwing Syntax Error when using LIKE with Parameters

我在 PHP 中使用 PDO 向我的 SQL 服务器提交查询。我需要使用 LIKE 子句来检查用户名以确保它是允许的(例如;它不包含任何禁止的词),所以我正在使用这个 SQL 查询...

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

当我使用 = 而不是 LIKE 时,PDO 代码适用于其他查询,但当我尝试使用 LIKE 子句时抛出上述错误.

我已经把我的完整代码放在 Pastebin 上了,如果你需要查看的话。 我正在使用 GET 获取数据,因为我将其与 AJAX 一起使用(也可以正常工作),但我尝试的用户名是 'dibdibs',在其他情况下也可以正常工作查询.

使用这个

你可以使用这两个中的任何一个

$query = $database->prepare('SELECT * FROM table WHERE column LIKE ?');
$query->execute(array('%value%'));

while ($results = $query->fetch())
{
   echo $results['column'];
}

 // without loop 

$query = "SELECT * FROM tbl WHERE address LIKE ?";
$params = array("%$var1%");
$stmt = $handle->prepare($query);
$stmt->execute($params);