使用PHP从MariaDB数据创建嵌套JSON
我需要帮助。使用PHP从MariaDB数据创建嵌套JSON,php,mysql,json,mysqli,mariadb,Php,Mysql,Json,Mysqli,Mariadb,我需要帮助。 我有三张桌子。 1.带有列的post\U表格:id\U post,post\U text。 2.附上带有列的图片:id图片、图片名称、id帖子。 3.带有列的注释表:id\u comment、comment\u text、id\u post <?php $con = mysqli_connect('localhost', 'root', '', 'postingan'); // Check connection if (mysqli_connect_errno())
我有三张桌子。
1.带有列的post\U表格:id\U post,post\U text。
2.附上带有列的图片:id图片、图片名称、id帖子。
3.带有列的注释表:id\u comment、comment\u text、id\u post
<?php
$con = mysqli_connect('localhost', 'root', '', 'postingan');
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else {
echo "success";
}
$postinganlist_array = array();
$postingan_array = array();
$image_array = array();
$comment_array = array();
$fetch_postingan = mysqli_query($mysqli,
"SELECT id_post, post_text FROM post_table")
or die(mysqli_error($mysqli));
while ($row_postingan = mysqli_fetch_assoc($fetch_postingan)){
$postingan_array['id'] = $row_postingan['id_post'];
$postingan_array['text'] = $row_postingan['post_text'];
$postingan_array['image']=array();
$postingan_array['comment']=array();
$fetch_images = mysqli_query($mysqli, "SELECT id_picture, picture_name FROM attach_picture WHERE id_post = ".$row_postingan['id_post']."") or die(mysqli_error($mysqli));
while ($row_image = mysqli_fetch_assoc($fetch_images)) {
$image_array['id']=$fetch_images['id_picture'];
$image_array['pict']=$fetch_images['picture_name'];
array_push($postingan_array['image'], $image_array);
}
$fetch_comments = mysqli_query($mysqli, "SELECT id_comment, comment_text FROM comment_table WHERE id_post = ".$row_postingan['id_post']."") or die(mysqli_error($mysqli));
while ($row_comment = mysqli_fetch_assoc($fetch_comments)) {
$comment_array['id']=$fetch_comments['id_comment'];
$comment_array['comment']=$fetch_comments['comment_text'];
array_push($postingan_array['comment'], $comment_array);
}
array_push($postinganlist_array, $postingan_array);}
$jsonData = json_encode(($postinganlist_array));
echo $jsonData;
?>
第36行:(“选择id\U post,从post\U表格中选择post\U文本”)第37行:(或die(mysqli_错误($mysqli)) 我的预期结果是
[{
"id": "1",
"text": "Good morning all",
"image":
{
"id": "1",
"pict": "morning.jpg"
}
"comment": [
{
"id": "1",
"comment": "Nice picture"
}
{
"id": "2",
"comment": "Thank you"
}
]
"id": "2",
"text": "This is my new project",
"image": [
{
"id": "2",
"pict": "splassreen.jpg"
}
{
"id": "3",
"pict": "main.jpg"
}
]
"comment": [
{
"id": "3",
"comment": "Great app"
}
{
"id": "4",
"comment": "Amazing"
}
]
}
]
请帮助我解决您使用的
代码中的问题
$con = mysqli_connect('localhost', 'root', '', 'postingan');
$fetch_postingan = mysqli_query($mysqli, "SELECT id_post, post_text FROM post_table") or die(mysqli_error($mysqli));
$fetch_images = mysqli_query($mysqli, "SELECT id_picture, picture_name FROM attach_picture WHERE id_post = ".$row_postingan['id_post']."") or die(mysqli_error($mysqli));
$fetch_comments = mysqli_query($mysqli, "SELECT id_comment, comment_text FROM comment_table WHERE id_post = ".$row_postingan['id_post']."") or die(mysqli_error($mysqli));
mysqli\u查询
使用连接字符串
。您已经输入了$mysqli
,它应该是$con
。您的查询必须如下所示:
$fetch_postingan = mysqli_query($con, "SELECT id_post, post_text FROM post_table") or die(mysqli_error($con));
$fetch_images = mysqli_query($con, "SELECT id_picture, picture_name FROM attach_picture WHERE id_post = ".$row_postingan['id_post']."") or die(mysqli_error($con));
$fetch_comments = mysqli_query($con, "SELECT id_comment, comment_text FROM comment_table WHERE id_post = ".$row_postingan['id_post']."") or die(mysqli_error($con));
它解决了我的问题,但结果是线性的,不像我想要的那样,像这样的成功[{“id”:“1”,“text”:“great view”,“image”:[{“id”:“1”,“pict”:“pict_1”},{“id”:“2”,“pict”:“pict_2”}],“comment”:[{“id”:“1”,“comment”:“那太棒了”},{“id”:“2”,“comment”:“当然,最好的”{“id”:“3”,“comment”:“祝我在那里”},{“id”:“2”,“text”:“早餐快乐”,“图像”:[],“评论”:[{“id”:“4”,“评论”:“是的,早餐快乐”},{“id”:“5”,“评论”:“hehe”}]},{“id”:“3”,“文本”:“大家晚安”,“图像”:[],“评论”:[]}]我必须添加什么代码才能使它看起来好看?
$fetch_postingan = mysqli_query($con, "SELECT id_post, post_text FROM post_table") or die(mysqli_error($con));
$fetch_images = mysqli_query($con, "SELECT id_picture, picture_name FROM attach_picture WHERE id_post = ".$row_postingan['id_post']."") or die(mysqli_error($con));
$fetch_comments = mysqli_query($con, "SELECT id_comment, comment_text FROM comment_table WHERE id_post = ".$row_postingan['id_post']."") or die(mysqli_error($con));