2017-04-11 3 views
0

私は都市にしたがってlat、lngを取得しようとしています。私が後でクエリーの中で都市(「Buffalo」)を書くと、それは動作します。私は別の都市を使いたい。私はパラメータクエリを渡す

AND g.city = " . $city); 

を書くことを試みている

public function getLatLng($data, $city) { 
    $count_data = count($data); 
    for($i = 0; $i < $count_data; $i++) { 
     $latlngs = array(); 
     $stmt = $this -> conn -> prepare("SELECT g.lat, g.lng 
      FROM news_locations AS nl INNER JOIN geolocations AS g 
      ON g.geolocation_id = nl.geolocation_id 
      WHERE nl.news_id = ". $data[$i]["news_id"] ." 
      AND nl.is_deleted = 0 AND g.city = 'Buffalo'"); 
     if ($stmt -> execute()) { 
      $stmt -> bind_result($lat, $lng); 
      while($stmt -> fetch()) { 
       $row = array(); 
       $row["lat"] = $lat; 
       $row["lng"] = $lng; 
       array_push($latlngs, $row); 
      } 
      $stmt -> close(); 
     } 
     $data[$i]['latlng'] = array_values($latlngs); 
    } 
    return $data; 
} 

また、両方が動作しませんでした

AND g.city = :city"); 
if ($stmt -> execute(array('city' => $city))) { 

を試してみました。パラメータ$ cityをクエリに渡すにはどうすればよいですか?

+0

は、SQL文に変数をバインドする必要があります。 –

答えて

0

を連結文字列と変数:

g.city = '" . $city . "'" 

のような:

$stmt = $this -> conn -> prepare("SELECT g.lat, g.lng 
      FROM news_locations AS nl INNER JOIN geolocations AS g 
      ON g.geolocation_id = nl.geolocation_id 
      WHERE nl.news_id = ". $data[$i]["news_id"] ." 
      AND nl.is_deleted = 0 AND g.city = '" . $city . "'"); 
関連する問題