Search code examples
phparraysjsondatabasemamp

Convert data from db to JSON using php


I have already seen many questions but nothing has helped. I want to convert my data from database (MySQL) to JSON using PHP. This is my PHP code:

init.php

<?php
$db_name = "webappdb";
$mysql_user = "root";
$mysql_pass = "root";
$server_name = "localhost";
$charset= "utf8";

$con = mysqli_connect($charset, $server_name, $mysql_user, $mysql_pass, $db_name);
?>

listViewBooks.php

<?php

include("init.php");

header('Content-Type: application/json');

// get all items from user_info_book table
$sql = mysqli_query("SELECT * FROM `user_info_book`");

$res = mysqli_query($con,$sql);

$result = array();

while($row = mysqli_fetch_array($res)){
    $output[] = $row;
}

echo json_encode($output);
echo json_last_error();

mysqli_close($con);

?>

The error is 0, so it's nothing.


Solution

  • There are a bunch of problems in your code. For starters, you have this:

    $sql = mysqli_query("SELECT * FROM `user_info_book`");
    
    $res = mysqli_query($con,$sql);
    

    $sql is a mysqli_result object on success or boolean false on failure. Here, it's false because you didn't pass the database link ($con). See the docs. You shouldn't, don't need to, and can't store the result of mysqli_query in a variable ($sql) and then pass that variable in another call to mysqli_query. Just do:

    $sql = "SELECT * FROM `user_info_book`";
    
    $res = mysqli_query($con, $sql);
    

    Also, you initialize one array, then add to another:

    $result = array();
    
    while($row = mysqli_fetch_array($res)){
        $output[] = $row;
    }
    

    Perhaps you mean to do $output = array();?

    You would benefit from using an IDE like PHPStorm.