0

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

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

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

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

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

4

2 回答 2

3

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注射时应消毒。

于 2013-01-03T20:00:07.473 回答
1

正如@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']);
于 2013-01-03T20:01:13.170 回答