如何使用 LIKE 语句创建 PDO 参数化查询?
这是我的尝试:
$query = $database->prepare('SELECT * FROM table WHERE column LIKE "?%"');
$query->execute(array('value'));
while ($results = $query->fetch())
{
echo $results['column'];
}
这是我的尝试:
$query = $database->prepare('SELECT * FROM table WHERE column LIKE "?%"');
$query->execute(array('value'));
while ($results = $query->fetch())
{
echo $results['column'];
}
在我发布后立即弄清楚了:
$query = $database->prepare('SELECT * FROM table WHERE column LIKE ?');
$query->execute(array('value%'));
while ($results = $query->fetch())
{
echo $results['column'];
}
对于使用命名参数的用户,以下是如何对MySQL数据库进行部分匹配:LIKE
%
WHERE column_name LIKE CONCAT('%', :dangerousstring, '%')
其中,命名参数为 。:dangerousstring
换句话说,在你自己的查询中使用显式未转义的符号,这些符号是分开的,绝对不是用户输入。%
编辑:Oracle 数据库的串联语法使用串联运算符:,因此它只会变成:||
WHERE column_name LIKE '%' || :dangerousstring || '%'
但是,正如@bobince在这里提到的,有一些警告:
当您希望在搜索字符串中允许文本或字符而不将其用作通配符时,困难就来了。
%
_
因此,在结合喜欢和参数化时,这是需要注意的其他事项。