php - 为什么回显 JSON 编码数组不会产生任何输出

标签 php json

我有一个包含 19 个元素的小数据库,这是我用于检索数据库的 PHP 函数:

function retrieveDB(){

    $tempDB=array();

    $database=new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME);
    if(mysqli_connect_errno()){ 
        echo "Errore in connessione al database: ".mysqli_connect_error();
        exit();
    }
    $query="SELECT * FROM dr ORDER BY indice;";
    $risultato=$database->query($query);

    while($row = $risultato->fetch_assoc()){

        $tempDB[]=$row;
    }

    $database->close();
    return $tempDB;
}

我都尝试过

$temp=retrieveDB();
echo json_encode($temp);

foreach($temp as $t){
echo json_encode($t);}

但它似乎只在 19 上打印 3 个元素,跳过其他元素。这是我的输出:

{"indice":"1","domanda":"Quale principio attivo fa passare quel brutto mal di vivere?","risposta":"PARACETAMOLO","visibile":"1"}


{"indice":"4","domanda":"SARTANO utilizzato nella profilassi dell'ictus?","risposta":"LOSARTAN","visibile":"1"}













{"indice":"18","domanda":"Quale farmaco aumenta la concentrazione ematica della digossina? ","risposta":"VERAPAMIL","visibile":"1"}

我还用 utf8 编码了值。有什么建议吗?

最佳答案

您从数据库检索的字符串未编码为 UTF-8(我认为它们是 ISO-8859-1)。这就是 json_encode() 失败的原因。它会触发一条警告,显示 json_encode(): Invalid UTF-8equence in argument 但您的设置可能不允许 PHP 显示错误。

放置error_reporting(E_ALL & ~E_NOTICE); ini_set('display_errors', '1'); 位于脚本顶部的某个位置,您会看到它们。

关于php - 为什么回显 JSON 编码数组不会产生任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27316555/

相关文章:

java - 由于有效负载内容长度,AJAX POST 请求失败

json - 多行字符串作为 Json 中的值

c# - 将C#对象序列化为json

php - 验证用户是否在 symfony2 中通过身份验证

具有不区分大小写匹配的 PHP glob

php - 使用php定期发送电子邮件到存储在mysql中的邮件地址

php - 捕获和重新抛出异常的最佳实践是什么?

php - 使用 PHP 从 MySQL 读取空间数据

java - 为什么这个 JSON 文件数据没有正确保存到 Java 对象中?

javascript - 如何在多级未定义键中设置键值对