我正在尝试在我的PHP文件中显示JSON。问题是它没有显示任何内容,就像它是空的一样。
代码
<?php
include ('conexion.php');
//$id = $_GET['id'];
$sql = "SELECT tbl_usuarios.idUsuario, tbl_usuarios.nombrec, tbl_actividades.idUsuario, tbl_actividades.fec_actividad, tbl_actividades.nombre FROM tbl_actividades INNER JOIN tbl_usuarios ON tbl_usuarios.idUsuario = tbl_actividades.idUsuario WHERE tbl_usuarios.idUsuario = 1";
if($conexion){
if(!$result = mysqli_query($conexion,$sql)) die();
while($data = mysqli_fetch_array($result)){
$arreglo[] = $data;
}
echo json_encode($arreglo);
}else{
die ("error");
}
?>
仅在我使用print_r($arreglo)
时显示。
答案 0 :(得分:1)
您的某些数据库对象是西班牙语,最有可能的结果数组$arreglo
未在utf-8中编码。因为西班牙语使用像'ñ'这样的特殊字符,所以最有可能你的默认数据库编码不是utf-8。遇到此类字符时,函数json_encode
会失败并且不显示任何内容。因为这样的功能仅适用于utf-8结果。
处理此问题的一种方法是通过此函数传递数组,以便将所有内容转换为utf-8。将以下函数添加到PHP中。
function cast_data_types ($value) {
if (is_array($value)) {
$value = array_map('cast_data_types',$value);
return $value;
}
if (is_numeric($value)) {
if(strpos('.', $value)===false) return (float)$value;
return (int) $value;
}
return utf8_encode((string)$value);
}
您还可以应用JSON_UNESCAPED_UNICODE
来正确显示特殊字符。
所以而不是echo json_encode($arreglo);
您应该输入echo json_encode(cast_data_types($arreglo),JSON_UNESCAPED_UNICODE);
如果以上操作不起作用,您可以随时使用json_last_error()
检查在json_encode或json_decode操作期间遇到的错误。