【问题标题】:No replacement of question mark in prepared SQL statement准备好的 SQL 语句中不替换问号
【发布时间】:2020-09-15 23:52:37
【问题描述】:

我在 MariaDB 上的 PHP 中使用 PDO 来过滤文本字段包含 $search_terms 的行。但是,我只检索包含问号的行。好像$search_terms的内容在prepared statement中没有被替换。

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

为什么?

【问题讨论】:

  • 不起作用that way,需要其他处理。

标签: php sql


【解决方案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);

请注意,我们使用% 通配符将搜索词绑定到语句。该语句仅包含一个 ? 占位符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多