php - PHP:将 fetch_assoc() 放入数组中导致空值
问题描述
我正在尝试从 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 ......所以我怀疑这可能是一个简单的问题来解决......
谢谢!
解决方案
可能是我回答这个问题有点太晚了,但它可能会帮助有人遇到这个问题。最近我遇到了一个类似的问题,我花了 3 天时间才明白这是 utf-8 字符的问题。存储在数据库中的数据非常好。但是当通过 json_encode() 返回它时,它根本不显示任何数据,因为 json_encode 只支持 utf-8 数据( reference )。
对于您的情况,以下方法应该有效-
foreach ($results as &$r) {
$r['name'] = utf8_encode($r['name']);
//same for all other items
}
推荐阅读
- azure - 没有 Azure 应用服务计划的 Azure SQL 数据库?
- rust - 当关联类型没有大小时,如何避免需要`std::marker::Sized`?
- php - Codeigniter 也在重定向上加载相同的视图
- javascript - 为什么我的 web 应用程序在发出几个请求将项目推送到我的 mongodb 数据库后暂停?
- java - 2D Checker Board Java 数组打印不正确
- visual-studio - Visual Studio Code - 无法在此平台上使用映像操作系统“linux”错误
- ios - 如何在用户默认值中保存对象列表?
- c# - X509Certificate2:使用私钥解密时访问被拒绝
- django - 为什么我的 Django 将原始 css 加载到我的 html 文件中?
- keyerror - 为 Ritcher 量表评估 Python 编程时出错