这是我的尝试:
$query = $database->prepare('SELECT * FROM table WHERE column LIKE "?%"');
$query->execute(array('value'));
while ($results = $query->fetch())
{
echo $results['column'];
}
Run Code Online (Sandbox Code Playgroud)
And*_*son 121
我发布后立即想出来:
$query = $database->prepare('SELECT * FROM table WHERE column LIKE ?');
$query->execute(array('value%'));
while ($results = $query->fetch())
{
echo $results['column'];
}
Run Code Online (Sandbox Code Playgroud)
Kzq*_*qai 74
要使用与%部分匹配的Like,您还可以执行此操作:column like concat('%', :dangerousstring, '%')
使用命名参数:dangerousstring
.换句话说,在您自己的查询中明确使用未转义的%符号,这些符号是分开的,绝对不是用户输入.
编辑:我发现的另一种连接语法是使用连接运算符:||,所以它将变得简单:
where column like '%' || :dangerousstring || '%' etc
@bobince 在这里提到:
在 困难 来的时候,你要允许文字
%
或_
搜索字符串中的字符,而不用它作为通配符.
因此,在组合like和参数化时需要注意的其他事项.
Bla*_*zer 17
$query = $database->prepare('SELECT * FROM table WHERE column LIKE ?');
$query->bindValue(1, "%$value%", PDO::PARAM_STR);
$query->execute();
if (!$query->rowCount() == 0)
{
while ($results = $query->fetch())
{
echo $results['column'] . "<br />\n";
}
}
else
{
echo 'Nothing found';
}
Run Code Online (Sandbox Code Playgroud)
Vij*_*mar 12
你也可以试试这个.我面临类似的问题,但研究后得到了结果.
$query = $pdo_connection->prepare('SELECT * FROM table WHERE column LIKE :search');
$stmt= $pdo_connection->prepare($query);
$stmt->execute(array(':search' => '%'.$search_term.'%'));
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($result);
Run Code Online (Sandbox Code Playgroud)
这有效:
search `table` where `column` like concat('%', :column, '%')
Run Code Online (Sandbox Code Playgroud)