I have these tables in MySql
JavaScript
x
Countries -> countryId , countryName
Cities -> cityId , cityName , countryId
Neighborhoods -> neighborhoodId , neighborhoodName , cityId
The output should be like this
JavaScript
{
"Countries": [
{
"countryId": "...",
"countryName": "..."
},
{
"countryId": "...",
"countryName": "..."
},
{
"countryId": "...",
"countryName": "..."
},
{
"countryId": "...",
"countryName": "..."
}
],
"Cities": [
{
"cityId": "...",
"cityName": "...",
"countryId": "..."
},
{
"cityId": "...",
"cityName": "...",
"countryId": "..."
},
{
"cityId": "...",
"cityName": "...",
"countryId": "..."
},
{
"cityId": "...",
"cityName": "...",
"countryId": "..."
}
],
"Neighborhoods": [
{
"neighborhoodId": "...",
"neighborhoodName": "...",
"cityId": "..."
},
{
"neighborhoodId": "...",
"neighborhoodName": "...",
"cityId": "..."
},
{
"neighborhoodId": "...",
"neighborhoodName": "...",
"cityId": "..."
},
{
"neighborhoodId": "...",
"neighborhoodName": "...",
"cityId": "..."
}
]
}
This code gives me data of one table only
JavaScript
<?php
$connection = new mysqli('...', '...', '...', '...');
if ($connection->connect_errno)
{
printf("Failed to connect to database");
exit();
}
$result = $connection->query("SELECT * FROM Countries");
$dbdata = array();
while ($row = $result->fetch_assoc())
{
$dbdata[] = $row;
}
echo json_encode($dbdata);
?>
I’m new with PHP so I hope someone shows me how can I do it like above. Thank You……………………………………………………………………………………………………………………
Advertisement
Answer
Please check the code below, I added explaination as comments to the code itself.
JavaScript
<?php
// connect your database
$conn = mysqli_connect('*****','('*****','('*****','('*****');
// select the data from the 3 tables
$country_res = mysqli_query($conn, 'select * from Countries');
$city_res = mysqli_query($conn, 'select * from Cities');
$nighbor_res = mysqli_query($conn, 'select * from Neighborhoods');
// create 3 empty arrays to avoid notices, in case of
// empty results from database
$countries = [];
$cities = [];
$neighborhoods = [];
// fill countries array
while($country = mysqli_fetch_assoc($country_res)) {
$countries[] = $country;
}
// fill cities array
while($city = mysqli_fetch_assoc($city_res)) {
$cities[] = $city;
}
// fill neighborhoods array
while($nighbor = mysqli_fetch_assoc($nighbor_res)) {
$neighborhoods[] = $nighbor;
}
// print your results in the format you mentioned
//(you have to use HTML code in order for the browser to
// display it the way you need, so I used <pre> tag.)
echo '<pre>';
echo json_encode(['Countries' => $countries,
'Cities' => $cities,
'Neighborhoods' => $neighborhoods]);
echo '</pre>';
?>