0

我有一个苗条的 GET 方法设置,其基本签名如下所示:

$app->get('/musicians/name/:name', function($name) use ($allFields, $app, $db)

然后,我创建了一些查询文本,类似于以下内容:

$queryText = "SELECT date, bio, articles FROM Musicians WHERE name = :name"

然后我继续将 :name 参数绑定到调用函数时引入的 $name 变量。

这很好用,但如果我想让用户一次搜索多个音乐家会发生什么?有没有一种方法可以让用户在 URL 中输入一些内容,将我的内容翻译$queryText成类似于以下内容的内容"SELECT date, bio, articles FROM Musicians WHERE name = 'Beethoven' OR 'Bach' OR 'The Sex Pistols'"?

注意:我使用 PDO 进行数据库处理。

4

1 回答 1

1

是的,你可以做到:

$queryText = "SELECT date, bio, articles 
              FROM Musicians 
              WHERE name = :name or name = :name1 or name = name2";

然后您可以单独绑定每个值或使用值数组。

更新:

您可以在 url 中使用 name1&name2&name3,然后,您可以使用:

<?php
$names = explode("&", $querystring); //$querystring here is name1&name2&name3
//now names is an array contains all keywords
//lets build the query
$i = 1;
foreach($names as $name){
 $where[] = "name = :name$i";
 $params[":name$i"] = $name;
 $i++;
}
$queryText = "SELECT date, bio, articles 
              FROM Musicians 
              WHERE ".implode(" OR ", $where);
$sth = $dbh->prepare($queryText);
$sth->execute($params);
?>
于 2013-03-04T19:23:07.363 回答