-1

私はこのコードを作成しました

       $cities = arrary('city1','city2','city3','city4','city5');

       $query = "SELECT * FROM data_entry WHERE ";

        foreach($cities as $city){

           $query += " AND city = '$city' ";

        }

        echo $query;

このコードはゼロを出力します

$queryをこのように出力したい

  SELECT * FROM data_entry WHERE city = 'city1' AND city = 'city2' .... etc.
4

4 に答える 4

5

$ citys = array('city1'、'city2'、'city3'、'city4'、'city5');

   $query = "SELECT * FROM data_entry WHERE ";

    foreach($cities as $key => $city){
      if($key ==0){
        $query .= " city = '$city' ";
       }
       else{
       $query .= " AND city = '$city' ";
       }
    }

    echo $query;
于 2012-12-15T19:26:02.167 に答える
3
   $cities = array('city1','city2','city3','city4','city5');

   $query = "SELECT * FROM data_entry WHERE city='"
          .implode("' AND city='", $cities)."'";

   echo $query;

ただし、このクエリは常に空の結果を返します。配列内の異なる都市の場合、必要な選択クエリは次のようになります。

$cities = array('city1','city2','city3','city4','city5');
$query = 'SELECT * FROM data_entry '
    .'WHERE city IN("'.implode('","',$cities).'")';
于 2012-12-15T19:40:58.863 に答える
1
$query = "SELECT * FROM data_entry WHERE 1=1";
foreach($cities as $city){
    $query .= " AND city = '$city' ";
}

$cityセキュリティの問題を回避するために、値をエスケープすることを忘れないでください...(SQLインジェクション)

于 2012-12-15T19:15:25.337 に答える
-1

このコードは機能するはずです:

$cities=array('city1','city2','city3','city4','city5');
$query="SELECT * FROM data_entry WHERE city='".$cities[0]."'";
foreach(array_slice($cities,1) as $city)
{
    $query.=" OR city='$city'";
}
echo $query;

または、didiercのアイデアから:

$cities=array('city1','city2','city3','city4','city5');
$query="SELECT * FROM data_entry WHERE city='".$cities[0].implode("' OR city='",array_slice($cities,1))."'";
echo $query;
于 2012-12-15T19:18:11.907 に答える