mySQL从URL查询中获取单列的多个参数


mySQL getting multiple arguments for single column from URL query

我有一个输出数据的表单:

index.php?city=ADDIEVILLE&city=ALBERS&city=ALHAMBRA

然后需要像这样进入mysql where语句:

WHERE CITY = ADDIEVILLE OR CITY = ALBERS OR CITY = ALHAMBRA

我如何能够传递这些多个城市沿着mySQL查询使用PHP?

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']);