PHP:将fetch_assoc()放入数组导致空值

时间:2019-01-14 18:02:50

标签: php json mysqli mariadb

我正在尝试从节日和相应地点的MariaDB数据库中获取数据。运行时:

while($row = $sth->fetch_assoc()){}

并在输出值时遍历$ row,我得到的数据与数据库中的数据相同。 但是,当像这样存储每一行​​时:

while($row = $sth->fetch_assoc()){
    $results[] = $row;
}

并将结果作为JSON回显(echo json_encode($ results);) 我明白了:

{"id":"0","name":null,"village":"0","startDate":"2019-01-16",
"endDate":"2019-01-23","message":null}

这适用于我不管理的现有Linux服务器(我正在使用CPanel)。 PHP版本是5.4和MariaDB 10.1.37。

到目前为止,Stack Overflow和其他网站上的许多代码示例都在使用     $ results [] = $ row; 用于存储结果。 经过3年的仅Swift编程后,我将返回PHP。所以我怀疑这可能是一个简单的解决问题...

谢谢!

1 个答案:

答案 0 :(得分:-1)

回答这个问题可能为时已晚,但是它可能会帮助某些人解决这个问题。最近,我遇到了类似的问题,花了三天的时间才知道这是utf-8字符的问题。存储在数据库中的数据非常好。但是,当通过json_encode()返回它时,它根本不显示任何数据,因为json_encode仅支持utf-8数据(reference)。

对于您的情况,以下方法应该有效-

foreach ($results as &$r) {
    $r['name'] = utf8_encode($r['name']);
    //same for all other items
}