json_encode为MySQL查询返回一些行的一些空列,但该列不为空(json_encode f

2019-09-19 03:21发布

我创建一个小php文件获得MySQL行我的Android应用程序。 检索每个单列我使用:

    $q=mysql_query($sql, $this->conn) or die (mysql_error());
while($e=mysql_fetch_assoc($q)) {
      $output[]=$e;
    }
print(json_encode($output));

但有时它返回我不一致的输出。

这里有一个例子:该行:

ID = 1(正确) -名称= “名称1”(正确) -价格= 200(正确) - price2 = NULL(正确) - 面积= NULL(不正确),因为区域有“炫酷的Città”的价值..和等..

我怎样才能解决这个问题呢?

编辑:该值

[{ “ID”: “84”, “idutente1”:NULL, “idutente2”:NULL, “idutente3”:NULL, “idutente4”:NULL, “idutente5”:NULL, “idagente”:空, “公告”: “0”, “存档”: “0”, “dataarchiviazione”: “2012-07-05十三点31分19秒”, “tipoimmobile”: “住宅”, “法”, “销售”, “区”:空, “演示”, “1”, “主页”, “1”, “地图”, “1”, “名”: “翁贝托一世广场”, “地点”, “科尔”, “说明”:“60平方米。由两个房间过的服务,良好的中央办公室“” descdettagliata“:”公寓分为两个房间,厨房和浴室</ p> \在中心r \ nPosto,非常靠近海滨长廊里贾纳玛格丽特。 </ p> \ r \ n大公寓免和立即可用/ p> “” 徒劳 “” 2 “” 价格。 “:” 87000 “” 价格1 “:” 0 “” prezzo2“ “0”, “prezzo3”: “0”, “prezzo4”: “0”, “prezzo5”: “0”, “metriquadri”: “58”, “状态”: “在良好的状态”, “加热” “个人”, “classeenergetica”: “没有装备”, “计划”, “第一/第二/第三”, “适应症”, “”, “按揭”, “否”, “银行”: “”, “量” : “”, “目标”: “”, “类型”: “”, “折旧”: “”, “访问”: “20”,“timest 安培 “:” 2012-06-25 10时48分01秒 “” 文件名 “:” HPIM2268.jpg“}]

区域字段不为空,但“炫酷的Città”。 剩下的就是正确的。 我想只显示“区域”场与mysql_fetch_assoc($查询),并返回我正确的结果:“炫酷的Città”。 这个问题只与json_encode。

在SQL variabile的是:

$sql = sprintf("SELECT i.*, f.nomefile FROM immobili i LEFT JOIN foto f on(i.id=f.idimmobile AND f.copertina=1) WHERE i.id=%s", $_GET['id']);

这只是一个例子,如果我问其他行,区域字段返回正确也与json_encode等领域返回null。 难道是与字符串和文本格式的相关问题?

Answer 1:

这是一个编码的问题。 json_encode()只接受UTF-8字符串,返回null ,如果一个字符串是无效的UTF-8。

你可以通过它传递到json_encode之前将您的数据的编码解决这个问题。 看看iconv()mb_convert_encoding()

例如,假设您的数据编码LATIN1:

$e = array_map(function($string) {
    return iconv("iso-8859-1", "utf-8", $string);
}, $e);

$output[] = $e;

或者,如果你有PHP <5.3:

function cb($string) {
    return iconv("iso-8859-1", "utf-8", $string);
}

$e = array_map('cb', $e);

$output[] = $e;


Answer 2:

问题解决了

$result = $mysql->query($sql);
while($row = mysql_fetch_assoc($result)) {
   $r[] = array_map('utf8_encode', $row);
}
echo json_encode($r);

谢谢



文章来源: json_encode for mysql query returns some null columns of some rows, but the columns aren't null
标签: mysql json null