PHP在JSON数组

时间:2017-02-12 21:35:18

标签: php mysql json ajax

所有,我有一个运行MYSQL查询的php文件,并将结果放在一个数组中。该表有几个字段,一个字符' - '和'%'作为varchar字符串的一部分。当我在JSON数组中传回它时,它就会死掉。以下是代码部分..

PHP文件

// fetch merit guidelines
$meritGuideline = array();
$sql = "SELECT smg.id, year, ea.rating, ratioUpper, ratioLower, guideline, guidelineNum FROM spot_merit_guide smg JOIN epm_annual ea ON ea.id = smg.rating WHERE year = '$spotYear'";
$query = mysqli_query($con, $sql);
while ($row = mysqli_fetch_assoc($query)) {
    $meritGuideline[] = $row;
}
mysqli_free_result($query);

然后我用这个

返回
echo json_encode(array('meritGuideline' => $meritGuideline));

mysql表字段指南包含字符串0 - 4%。

1 个答案:

答案 0 :(得分:1)

首先,尝试将数据编码为UTF-8:

// fetch merit guidelines
$meritGuideline = array();
$sql = "SELECT smg.id, year, ea.rating, ratioUpper, ratioLower, guideline, guidelineNum FROM spot_merit_guide smg JOIN epm_annual ea ON ea.id = smg.rating WHERE year = '$spotYear'";
$query = mysqli_query($con, $sql);
while ($row = mysqli_fetch_assoc($query)) {
    $meritGuideline[] = utf8_encode($row); // ENCODE TO UTF-8
}
mysqli_free_result($query);

然后运行它以进行调试:

echo json_encode(array('meritGuideline' => $meritGuideline));
echo 'Error: ' . json_last_error_msg();
  1. 如果上面的第一行确实输出了你的JSON,那么问题很可能是隐藏的UTF-8只有特殊/不可见的空格字符,这在处理JSON编码或甚至是Javascript代码解析时经常是恶作剧。浏览器。以下是这些“特殊”空格字符的一些示例:

    不间断的空间:http://www.fileformat.info/info/unicode/char/00a0/index.htm

    零宽度空间:http://www.fileformat.info/info/unicode/char/200b/index.htm

  2. 如果第一行仍然没有输出任何内容,那么第二行将允许您查看PHP的JSON编码器中发生的确切错误。