0

私は初心者です。MySQL の 3 つのフィールド (city、provinceName、countryName) をコンマ区切りの文字列に連結し、"city" をキーとして JSON で文字列を返したいと考えています。文字列を取得できず、それらを JSON の完全なテキストに構築できません。私のPHPは:

$fetch = mysql_query("SELECT DISTINCT city GROUP_CONCAT(DISTINCT city, stateProvinceName, countryName SEPARATOR ',') FROM neighborhoods
WHERE countryAbbreviation='$countryAbbreviation' AND stateProvinceName IS NOT NULL
") or die(mysql_error());
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)){
$row_array['city'] = $row['city'];
array_push($return_arr,$row_array);
}
echo json_encode($return_arr);

クエリをテストすると、カンマ区切りではありません。代わりに、Quebec CityQuebecCanada を取得します。Web サイトを実行すると、JSON 応答は {"city":"Quebec City"} のみです。望ましい応答は、{"city":"Quebec City, Quebec, Canada"} - または一般的なケースでは、複数の "city" オブジェクトです。

何を変更すればよいですか。具体的にお願いします。私は一般的な指示にうまく従いません。

4

3 に答える 3

0

連結文字列の代わりに都市フィールドを使用します。

$fetch = mysql_query("SELECT DISTINCT CONCAT_WS(',', city, stateProvinceName, countryName) AS full_address FROM neighborhoods
WHERE countryAbbreviation='$countryAbbreviation' AND stateProvinceName IS NOT NULL
") or die(mysql_error());
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)){
$row_array['city'] = $row['full_address'];
array_push($return_arr,$row_array);
}
echo json_encode($return_arr);
于 2013-02-06T20:41:11.953 に答える
0
while(....)
{
     $city = $row['city'] . ", ";
}
//cuts off last comma, alternatively convert above loop to do/while
$city = substr($city, strpos(",", $city, -1));

echo json_encode($city);
于 2013-02-06T20:29:34.497 に答える
0

Use group by clause on city when you want to have distinct values for each city.

于 2013-02-06T20:46:25.197 に答える