【问题标题】:How to escape 'LIKE' statement in custom PDO query如何在自定义 PDO 查询中转义“LIKE”语句
【发布时间】:2015-04-28 06:26:30
【问题描述】:

我有一个自定义 OOP 查询对象,其中包含用于 MySQL 查询的准备好的语句。问题是我有一个LIKE 语句,它不允许我使用准备好的语句插入数据。

如何在这种情况下转义数据?这是我的代码:

$search_q = !empty($search) ? "AND `title` LIKE '%?%'" : "";
$items = DB::fetch("SELECT `title` FROM `products` WHERE `active` = 1 $search_q;", array($start));

【问题讨论】:

    标签: php mysql oop pdo


    【解决方案1】:

    您需要将通配符匹配字符放在占位符中,而不是在查询中,所以不要这样做:

    $search = 'find this string';
    $db::query("SELECT ... FROM table WHERE col LIKE '%?%' ");
    

    你这样做:

    $search = '%find this string%';
    $db::query("SELECT ... FROM table WHERE col LIKE ? ");
    

    【讨论】:

      【解决方案2】:

      First result in Google serp

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

      【讨论】:

      • 是的,但是如上所示,我的 DB 对象的结构并非如此。
      猜你喜欢
      • 2010-12-19
      • 2010-12-05
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      相关资源
      最近更新 更多