0

PHP

function ConectarBD(){
   $conexion = mysqli_connect("localhost", "root", "", "adbsense");
    if($conexion){
        echo 'La conexión de la base de datos se ha hecho satisfactoriamente ';
    }else{
        echo 'Ha sucedido un error inesperado en la conexión de la base de datos ';
    }
    return $conexion;
}

function desconectarBD($conexion){

    $close = mysqli_close($conexion);

    if($close){
        echo 'La desconexión de la base de datos se ha hecho satisfactoriamente ';
    }else{
        echo 'Ha sucedido un error inesperado en la desconexión de la base de datos ';
    }

    return $close;
}

function getArraySQL(){
    //Creamos la conexión con la función anterior
    $conexion = ConectarBD();
    $sql = "SELECT post_name, post_content, post_modified from wp_posts where substring(post_modified,1,10) = curdate() and post_status='publish'";
    //generamos la consulta
    $result = mysqli_query($conexion, $sql);
    $rawdata = array(); //creamos un array

    //guardamos en un array multidimensional todos los datos de la consulta
    $i=0;

    while($row = mysqli_fetch_array($result))
    {
        $rawdata[$i] = $row;
        $i++;
    }

    desconectarBD($conexion); //desconectamos la base de datos

    return $rawdata; //devolvemos el array
}
$json = json_encode(getArraySQL());
print_r(json_encode(getArraySQL()));
console.log($jsonConsulta);

El problema es que no me imprime el JSON y no sé si está traen los rows correctos. Que hice mal, aparte de nacer xD

  • ¿Podrías añadir en tu pregunta el resultado de hacer `var_dump(getArraySQL())`? ¿Por que tienes esta línea `console.log($jsonConsulta)`? Eso tiene pinta de ser `JS`, no `PHP` – Marcos Jul 20 '17 at 17:27

1 Answers1

0

Suponiendo que el json esté correctamente formado, necesitas indicarle el contendo del archivo.

header("Content-Type: application/json; charset=UTF-8");
echo json_encode(getArraySQL());

Si aun falla, debes tener en cuenta que la función json_encode() requiere que los datos estén con formato UTF-8, si no da error. Si no lo están, debes cambiarlo:

utf8_encode($string);

He asumido que has comprobado que traes los datos de la base de datos sin problemas, y que el problema es la creación del json. Espero que te sirva.

Carmen
  • 7,127
  • 1
  • 13
  • 21
  • entonces pongo utf8_encode(getArraySQL()) ? – Ernesto Emmanuel Yah Lopez Jul 20 '17 at 16:50
  • Se lo tienes que añadir a cada elemento a todos los que sean strings cuando recoges la consulta – Carmen Jul 20 '17 at 16:54
  • while($row = mysqli_fetch_array($result)) { $rawdata[$i] = utf8_encode($row); $i++; } asi? – Ernesto Emmanuel Yah Lopez Jul 20 '17 at 16:56
  • disculpa es que no sabría a que te refieres – Ernesto Emmanuel Yah Lopez Jul 20 '17 at 16:57
  • Cuando recorres el array $rawdata[$i]['post_name'] = utf8_encode($row['post_name']), es más laborioso pero suele funcionar muy bien. – Carmen Jul 20 '17 at 17:05
  • Sin duda alguna es la mejor opción y es cómo funciona; – Ernesto Emmanuel Yah Lopez Jul 20 '17 at 17:12
  • Estupendo, me alegra que te funcione. Si crees que ya está respondida la pregunta márcala para que no quede pendiente – Carmen Jul 20 '17 at 17:21
  • _Se lo tienes que añadir a cada elemento a todos los que sean strings cuando recoges la consulta – Carmen_ Eso se puede evitar estableciendo el encodaje a UTF-8 cuando creas la conexión a la BD, de ese modo no tienes que estar usando `utf8_encode()` por todas partes. Ver: [¿Por que el Carácter inspector (�) aparece en algunos datos obtenidos de la Base de Datos?](https://es.stackoverflow.com/a/59510/29967) – A. Cedano Jul 20 '17 at 19:21
  • Si ACedano es una buena opción, y a veces no es necesario si tienes establecida utf8 como la codificación de tu web y de tu base de datos, pero si tienes iso puede dar problemas. – Carmen Jul 20 '17 at 19:49
  • cómo podría obtener el tamaño del json si lo guardo en una variable? $json = json_encode(getArraySQL())? – Ernesto Emmanuel Yah Lopez Jul 20 '17 at 22:52
  • Puedes hacerlo antes de codificarlo, viendo el tamaño de getArraySQL() e incluyéndolo como una variable más en el json, o bien en el archivo de destino una vez que haces el json_decode() ves con el tamaño del array resultante, si es en php con un count(). – Carmen Jul 21 '17 at 07:31