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);
我在 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);