1

この質問はPHP Multiple Dropdown Box Form Submit To MySQLに似ていますが、ひねりがあります。

PHP バックエンドに送信される HTML 複数選択があるとします。

複数選択の値に OR 条件を使用して mysql リクエストをエレガントに作成するにはどうすればよいですか?

たとえば、スポーツのリストを複数選択しています。方法:

SELECT * FROM sports WHERE sport.name=:sport1 OR sport.name=:sport2 OR sport.name=:sport3...
4

3 に答える 3

2

これはテストされていません。単なるアイデアです...

$_POST['sports'] = array('basketball', 'baseball', 'football', 'soccer');

$sql = sprintf("SELECT * FROM sports WHERE sport.name IN (%s)", implode( ',', array_fill(1,count($_POST['sports']), '?') ) );
// SELECT * FROM sports WHERE sport.name IN (?,?,?,?) 
$st = $dbh->prepare($sql);

// bind all values
foreach( $_POST['sports'] as $i => $sport) {

    $st->bindValue( ++$i, $sport );

}

$st->execute();
于 2009-11-26T20:42:25.387 に答える
2
SELECT * FROM sports WHERE sports.name IN ('football','hockey','soccer','trolling');
于 2009-11-26T19:57:51.840 に答える
1
$_POST['sports'] = array('basketball', 'baseball', 'football', 'soccer');

$sql = sprintf("SELECT * FROM sports WHERE sport.name IN (%s)", implode(',', $_POST['sports']));

結果として

SELECT * FROM sports WHERE sport.name IN (basketball,baseball,football,soccer)
于 2010-07-29T14:16:04.930 に答える