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

时间:2017-12-19 15:41:59

标签: php select pdo prepared-statement

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

// Get unique dates 
dates = { c:[0,0] for a, b, c in mylist }
// Collect sum for the 1st and 2nd entries    
for a, b, c in mylist:
  dates[c][0] += float(a)
  dates[c][1] += float(b)  

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

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

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

1 个答案:

答案 0 :(得分: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);