これにデータを出力するフォームがあります:
index.php?city=ADDIEVILLE&city=ALBERS&city=ALHAMBRA
次に、次のようなmysqlwhereステートメントに入る必要があります。
WHERE CITY = ADDIEVILLE OR CITY = ALBERS OR CITY = ALHAMBRA
PHPを使用してこれらの複数の都市をmySQLクエリに渡すにはどうすればよいですか?
index.php?city=ADDIEVILLE&city=ALBERS&city=ALHAMBRA
次のように印刷されます:$_GET['city']='ALHAMBRA';
一方:
index.php?city[]=ADDIEVILLE&city[]=ALBERS&city[]=ALHAMBRA
配列として出力します。
次に、これを次のように変換できます。
$cities = $_GET['city'];
$str = "CITY='".implode("' OR CITY='",$cities)."'";
echo $str;
注:$cities
注射のために消毒する必要があります。
@MichaelBerkowskiが言うように、フィールド名として使用する必要があります。そうすればcity[]
、次のようなことができます。
$dbh = new PDO("mysql:dbname=$dbname", $username, $password);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
$qry = $dbh->prepare('
SELECT *
FROM my_table
WHERE CITY IN ('.implode(',', array_fill(0, count($_GET['city']), '?')).')
');
$qry->execute($_GET['city']);