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 に答える