我有一个包含 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/