首页  >  问答  >  正文

使用PDO参数化查询来创建带有LIKE语句的方法

<p>这是我尝试的代码:</p>
$query = $database->prepare('SELECT * FROM table WHERE column LIKE "?%"');

$query->execute(array('value'));

while ($results = $query->fetch()) 
{
    回显$结果['列'];
}</pre></p>
P粉394812277P粉394812277396 天前539

全部回复(2)我来回复

  • P粉722521204

    P粉7225212042023-08-23 09:18:33

    对于使用命名参数的用户,以下是如何在MySQL数据库中使用LIKE进行%部分匹配的方法:

    WHERE column_name LIKE CONCAT('%', :dangerousstring, '%')

    其中命名参数为:dangerousstring

    换句话说,您在自己的查询中使用明确的非转义%符号,这些符号与用户输入分开。

    编辑:对于Oracle数据库,连接语法使用连接运算符:||,所以它将简化为:

    WHERE column_name LIKE '%' || :dangerousstring || '%'

    然而,正如@bobince在这里提到的,还有一些注意事项:

    因此,在结合like和参数化时还需要注意其他事项。

    回复
    0
  • P粉731861241

    P粉7318612412023-08-23 00:34:09

    发布后就找到答案了:

    $query = $database->prepare('SELECT * FROM table WHERE column LIKE ?');
    $query->execute(array('value%'));
    
    while ($results = $query->fetch())
    {
        echo $results['column'];
    }

    回复
    0
  • 取消回复