Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将多个MySQL字段连接到一个JSON响应中_Php_Mysql - Fatal编程技术网

Php 将多个MySQL字段连接到一个JSON响应中

Php 将多个MySQL字段连接到一个JSON响应中,php,mysql,Php,Mysql,我是个新手。我想将MySQL中的3个字段(city、provinceName、countryName)连接成逗号分隔的字符串,并以JSON的形式返回字符串,键为“city”。我无法获取字符串,也无法用JSON将它们构造成完整的文本。我的PHP是: $fetch = mysql_query("SELECT DISTINCT city GROUP_CONCAT(DISTINCT city, stateProvinceName, countryName SEPARATOR ',') FROM neig

我是个新手。我想将MySQL中的3个字段(city、provinceName、countryName)连接成逗号分隔的字符串,并以JSON的形式返回字符串,键为“city”。我无法获取字符串,也无法用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”:“魁北克市”}。所需的响应是{“城市”:“魁北克市,魁北克,加拿大”}——或者在一般情况下,多个“城市”对象


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

您使用的是城市字段而不是具体的字符串

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

如果希望每个城市有不同的值,请在城市上使用group by子句。

这是向前迈出的一大步,因为我得到了3个字段,但它们没有逗号。我得到[{“城市”:“魁北克城市魁北克加拿大”}]组_CONCAT以粉红色显示在我的MySQLWorkbench中。这可能意味着什么,但我不知道是什么。测试查询不包含逗号。请尝试使用
concat\u WS
而不是
GROUP\u-concat
GROUP\u CONCAT
GROUP\u BY
一起使用。我已经更新了答案。但是,也许您想根据这些结果进行分组?谢谢,测试查询可以工作,并且网站可以在JSON中获得正确的内容。如果您使用这种方法,为什么不呢:while(..){$city[]=$row['city'];}echo JSON_encode(内爆(',',$city));