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

当我测试查询时,它不是逗号分隔的。相反,我得到魁北克市魁北克加拿大。当我运行网站时,JSON 响应只有 {"city":"Quebec City"}。所需的响应是 {"city":"Quebec City, Quebec, Canada"} - 或者在一般情况下,多个“城市”对象。

我应该改变什么。请具体。我没有很好地遵循一般说明。

4

3 回答 3

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

您使用城市字段而不是连接字符串。

$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

当您希望每个城市具有不同的值时,请对城市使用 group by 子句。

于 2013-02-06T20:46:25.197 回答