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

问题描述 投票:1回答:1

我有一个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');
php select pdo prepared-statement
1个回答
0
投票

您可以根据需要多次使用相同的占位符*。您只需使用正确的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);
© www.soinside.com 2019 - 2024. All rights reserved.