如何在SELECT FROM PDO Prepared Statement中为搜索框设置多个搜索条件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在SELECT FROM PDO Prepared Statement中为搜索框设置多个搜索条件?相关的知识,希望对你有一定的参考价值。

我有一个prepare语句,它根据我的数据库找到搜索条件,其中包含一个Articles表和Text和Title列。

$stmt = $pdo->prepare('SELECT * FROM articles WHERE text OR title LIKE :search');

我的问题是该语句只按标题搜索并完全忽略文本。

我这样尝试它并且它有效,但我也需要标题

$stmt = $pdo->prepare('SELECT * FROM articles WHERE text LIKE :search');
答案

您可以根据需要多次使用相同的占位符*。您只需使用正确的SQL语法。见下文:

$stmt = $pdo->prepare('SELECT * FROM articles WHERE text LIKE :search OR title LIKE :search');
//                                                       ^^^^^^^^^^^^

然后只需绑定一次:

$stmt->bindValue(':search', $searchTerm); // replace $searchTerm with your variable name

该值将填补这两个地方。

我假设您已经将%添加到您绑定的变量中。


*来自PDO::prepare

除非启用了仿真模式,否则不能在预准备语句中多次使用同名的命名参数标记。

所以,只要仿真模式开启,你就可以开始了。否则,您必须单独命名并绑定它们:

$stmt = $pdo->prepare('SELECT * FROM articles WHERE text LIKE :search1 OR title LIKE :search2');
$stmt->bindValue(':search1', $searchTerm);
$stmt->bindValue(':search2', $searchTerm);

以上是关于如何在SELECT FROM PDO Prepared Statement中为搜索框设置多个搜索条件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在foreach循环中显示来自PDO的数据

PDO SELECT 列正确

pdo 使用通配符准备语句

如何获取最后插入的ID,以及PDO列的名称?

如何选择表名为Variable的MySQL

如何正确使用 PDO 对象进行参数化 SELECT 查询