我有一个简洁的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数据库处理。
是的,你可以做到:
$queryText = "SELECT date, bio, articles
FROM Musicians
WHERE name = :name or name = :name1 or name = name2";
那么你可以分别绑定每个值或者使用一个值数组。
更新:你可以在url中使用name1& nam2 &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);
?>