我有一个向此输出数据的表单:
index.php?city=ADDIEVILLE&city=ALBERS&city=ALHAMBRA
然后需要像这样进入一个mysql where语句:
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']);