Respuesta en blanco no hay valores que muestran json php

Así que la implementación es como sigue , incluyo la base de datos , que sé que funciona , porque tenía un o morir ("no se puede conectar a la base de datos ") que nunca se induce, por lo que la raíz puede conectarse al db. Tengo una cabecera para decodificar utf-8, pero no funcionó al parecer. Y cuando echo un eco json no devuelve nada, sólo en blanco. Nota: uso marihuana. También el reporte de errores se establece en On y no recibo ningún error.

php
header('Content-Type: 
charset=utf-8');
include('db_connect.php');

$stmt = $conn-prepare("SELECT col1, col2, col3 FROM table1");

$stmt ->execute();
$stmt -> bind_result($val1col1, $val2col2, $val3col3);

$values = array();

while($stmt ->fetch()){

   $temp = array();

   $temp['col1'] = $val1col1;
   $temp['col2'] =$val2col2;
   $temp['col3'] = $val3col3;

   array_push($values,$temp);
}

echo json_encode($values, false, 512, JSON_UNESCAPED_UNICODE);

?>

Pregunta hecha hace 3 años, 4 meses, 27 días - Por syntaxsculptor


2 Respuestas:

  • El problema que estás experimentando puede deberse a un error en la forma en que estás utilizando la función json_encode() en tu código PHP. La función json_encode() solo toma dos argumentos: los datos que deseas convertir a JSON y opcionalmente las opciones de codificación.

    Aquí te dejo el código corregido:

    php
    header('Content-Type: application/json; charset=utf-8');
    include('db_connect.php');
    
    $stmt = $conn->prepare("SELECT col1, col2, col3 FROM table1");
    
    $stmt->execute();
    $stmt->bind_result($val1col1, $val2col2, $val3col3);
    
    $values = array();
    
    while($stmt->fetch()){
    
       $temp = array();
    
       $temp['col1'] = $val1col1;
       $temp['col2'] = $val2col2;
       $temp['col3'] = $val3col3;
    
       array_push($values, $temp);
    }
    
    echo json_encode($values, JSON_UNESCAPED_UNICODE);
    

    En esta versión corregida, he eliminado los argumentos innecesarios en la función json_encode() y he ajustado el encabezado "Content-Type" para que sea adecuado para la respuesta JSON.

    Es importante verificar también que la consulta SQL está devolviendo resultados y que la conexión a la base de datos se está realizando correctamente para asegurarte de que los datos que estás tratando de convertir a JSON son válidos.

    Respondida el Dec 19, 2020 a las 15:25 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Posibles causas del problema:

    1. Error de sintaxis:

    Revisa cuidadosamente el código en busca de errores de sintaxis, como puntos y comas faltantes o paréntesis no coincidentes.

    2. Conexión a la base de datos:

    Aunque hayas incluido el archivo de conexión de la base de datos, asegúrate de que la conexión se establece correctamente. Verifica que las credenciales de la base de datos sean correctas y que el servidor de la base de datos esté en funcionamiento.

    3. Codificación de caracteres:

    La cabecera Content-Type que has establecido es correcta para la codificación UTF-8. Sin embargo, asegúrate de que tu base de datos y las tablas estén configuradas para utilizar UTF-8.

    4. Salida JSON:

    Verifica que estás codificando el array $values como JSON correctamente utilizando json_encode(). Asegúrate de que estás pasando las opciones correctas como argumentos.

    Pasos para depurar:

    1. Verificar la conexión a la base de datos:

    Añade una instrucción echo después de $stmt ->execute() para imprimir el número de filas afectadas. Si es 0, la consulta no se está ejecutando correctamente.

    2. Depurar la salida JSON:

    Utiliza var_dump($values) para imprimir el contenido del array antes de codificarlo como JSON. Esto te ayudará a verificar si el array contiene datos.

    3. Habilitar el registro de errores:

    Configura error_reporting en E_ALL y ini_set('display_errors', 1) para mostrar todos los errores y advertencias. Esto puede ayudarte a identificar cualquier error oculto.

    4. Verificar la codificación de la base de datos:

    Ejecuta la consulta SHOW CREATE TABLE table1; en tu base de datos y verifica la opción CHARACTER SET. Debe estar configurada en utf8 o utf8mb4.

    5. Verificar la configuración de PHP:

    • Asegúrate de que la extensión json esté habilitada en tu configuración de PHP. Puedes verificar esto en tu archivo php.ini.

    Respondida el Dec 19, 2020 a las 15:38 - por Gemini

    Votos positivos: 0 | Votos negativos: 0