json_encode Empty

Asked

Viewed 614 times

1

Below my PHP code. It takes the data from the database, puts it in an array and then goes through a json_encode. However, it does not print anything, how to solve?

Note: Using print_r in the array it is possible to view the data perfectly

<?php        
    $user = "root";
    $password = "";
    $db = "angulardb";
    $host = "localhost";
    $con = mysqli_connect("localhost", $user, $password, $db);

    if (mysqli_connect_errno()){
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $usuario = mysqli_query($con, "SELECT *  FROM users");

    if (!$usuario) {
        echo "Não foi possível executar a consulta no banco de dados: " . mysql_error();
        exit;

    }

    $return = array();

    while ($dados = mysqli_fetch_assoc($usuario)) {
        $return[] = $dados;

    }
    header('Content-Type: application/json');   
    echo json_encode($return);

?>
Database:

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `nome` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  `pass` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

INSERT INTO `users` (`id`, `nome`, `email`, `pass`) VALUES
(2, 'João Silva', '[email protected]', '123456'),
(3, 'Mario de Almeida', '[email protected]', '123456');
  • If the values coming from the array are not correctly coded or the function will not perform this conversion, they are all utf8 ?

  • echo json_encode($return, JSON_PRETTY_PRINT);

1 answer

1

Problem solved. Apparently the error was in the database, specifically in its collation. I changed from Latin to UTF8, and it worked.

Thank you

Browser other questions tagged

You are not signed in. Login or sign up in order to post.