分享
三行代码  ›  专栏  ›  技术社区  ›  vkubicki

准备好的SQL语句中没有替换问号

  •  0
  • vkubicki  · 技术社区  · 1 周前

    我在MariaDB上使用PHP中的PDO来过滤文本字段包含的行 $search_terms $search_术语 在准备好的语句中没有被替换。

    $query = $db->prepare('SELECT * FROM notes WHERE text LIKE \'%?%\'');
    $query->execute(array($search_terms));
    $data['notes'] = $query->fetchAll(PDO::FETCH_ASSOC);
    

    为什么?

    1 回复  |  直到 1 周前
        1
  •  1
  •   Tim Biegeleisen    1 周前

    不确定是否 $search_terms 旨在包含一个或多个搜索项。您的查询暗示了前者,如果是,则使用:

    $search_term = "%apple%";
    $query = $db->prepare('SELECT * FROM notes WHERE text LIKE ?');
    $query->execute($search_term);
    $data['notes'] = $query->fetchAll(PDO::FETCH_ASSOC);
    

    注意,我们将搜索项与 % ?