2017-03-27 37 views
0

我需要帮助。
我有3张桌子。
1.带列的post_table:id_post,post_text。
2. attach_picture与列:id_picture,picture_name,id_post。
3. comment_table with column:id_comment,comment_text,id_post。使用PHP从MariaDB数据创建嵌套的JSON

<?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; 
?> 

输出是像

success 
Warning: mysqli_query(): Couldn't fetch mysqli in C:\xampp\htdocs\post\get.php on line 36 

Warning: mysqli_error(): Couldn't fetch mysqli in C:\xampp\htdocs\post\get.php on line 37 

线36:( “选择id_post,POST_TEXT FROM post_table”)
线37:(或管芯(mysqli_error(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" 
     } 
    ] 
} 
] 

帮我解决我的问题

回答

1

在你code你已经使用

$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_query使用connection string。您已输入$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)); 
+0

它解决了我的问题。但结果是线性的,不像我想要的那样成功[{“id”:“1”,“text”:“伟大的视图”,“图像”:[{“id”:“1”,“pict”: “pict_1”},{“id”:“2”,“pict”:“pict_2”}],“comment”:[{“id”:“1”,“comment”:“that's amazing”},{“ id“:”2“,”comment“:”当然是最好的“},{”id“:”3“,”comment“:”wish me there“}]},{”id“:”2“ ,“文字”:“快乐早餐”,“形象”:[],“评论”:[{“id”:“4”,“评论”:“是,快乐早餐”},{“id”:“5 “,”评论“:”嘿嘿“}]},{”id“:”3“,”text“:”晚安大家“,”形象“:[],”评论“:[]}我补充说,它看起来不错? –