2017-01-18 5 views
0

Привет Я новичок в PHP и пытается получить ответ ниже с помощью PHP SQL, но я не быть в состоянии найти такой вывод Дезирезапись Извлечение из двух таблицы и конвертировать в формат JSON

[{"Id":1, "name": "India", "Cities":[{"Id":1, "Name":"Mumbai", "country_id":1}, {"Id":2,"Name":"Delhi","country_id":1}, 
"id":3,"Name":Banglore","country_id":1}, {"Id":2, "Name":"USA", "Cities":[{"Id":6, "Name":"New York", "country_id":2},..... 

I есть две таблицы, одна из которых основана на стране, а другая - городская.

I tried 
<?php 

    include_once("config.inc.php"); 

    $sql = "SELECT * FROM country"; 
    $sqlCity = "SELECT * FROM city"; 

    $cityQuery = mysqli_query($conn, $sqlCity); 
    $sqlQuery = mysqli_query($conn, $sql); 

    $mainArray = array(); 

    if(mysqli_num_rows($cityQuery) > 0){ 
     $cityResponse = array(); 
     while($resCity = mysqli_fetch_assoc($cityQuery)){ 
      $cityResponse[] = $resCity; 
     } 

    if(mysqli_num_rows($sqlQuery) > 0){ 
     $response = array(); 
     while($res = mysqli_fetch_assoc($sqlQuery)){ 
      $response[] = $res; 
     } 
     foreach($cityResponse as $city){ 
      foreach($response as $country){ 
       if($city['country_id'] == $country['id']){ 

        $mainArray = array("Cities" => $city); 
       } 
      } 
     } 
     echo '{"response": '.json_encode($response).', '.json_encode($mainArray).' "success": true}'; 
    } 
    }else{ 
     echo '{"response": '.json_encode($response).' "success": false}'; 
    } 


?> 

В настоящее время мой ответ, показывая

{"response": [{"id":"1","name":"India"},{"id":"2","name":"USA"},{"id":"3","name":"UK"}], {"Cities":{"id":"15","name":"Manchester","country_id":"3"}} "success": true} 
+0

но то, что вы хотите делать дальше ?? –

+0

просто хочу данные формата json –

+0

У меня есть сценарий, который читает ответ, который вы слышите? Как выглядит этот сценарий? Потому что в противном случае у вас есть точная вещь, которую вы ищете, прежде чем обернуть ее в '{" response ": ...}' – Tom

ответ

0

Для детального кода объяснения проверить встроенные комментарии

  • Изменить SQL запрос с соответствующими именами столбцов
  • Память, которую вы должны позаботиться. По пределу памяти по умолчанию в РНР 128 в 5.3
  • Проверьте код и дайте мне знать результат

    <?php 
    
    $data = array(); 
    
    //include your database configuration files 
    include_once("config.inc.php"); 
    
    //execute the join query to fetch the result 
    $sql = "SELECT country.country_id, country.name AS country_name,". 
    " city.city_id, city.name AS city_name FROM country ". 
    " JOIN city ON city.country_id=country.country_id ". 
    " ORDER BY country.country_id "; 
    
    //execute query 
    $sqlQuery = mysqli_query($conn, $sql) or die('error exists on select query'); 
    
    //check the number of rows count 
    if(mysqli_num_rows($sqlQuery) > 0){ 
    
    //country id temprory array 
    $country_id = array(); 
    
    //loop each result 
    while($result = mysqli_fetch_assoc($sqlQuery)){ 
    
        //check the country id is already exist the only push the city entries 
        if(!in_array($result['country_id'],$country_id)) { 
    
         //if the city is for new country then add it to the main container 
         if(isset($entry) && !empty($entry)) { 
          array_push($data, $entry); 
         } 
    
         //create entry array 
         $entry = array(); 
         $entry['Id'] = $result['country_id']; 
         $entry['name'] = $result['country_name']; 
         $entry['Cities'] = array(); 
    
         //create cities array 
         $city = array(); 
         $city['Id'] = $result['city_id']; 
         $city['name'] = $result['city_name']; 
         $city['country_id'] = $result['country_id']; 
    
         //append city entry 
         array_push($entry['Cities'], $city); 
         $country_id[] = $result['country_id']; 
        } 
        else { 
    
         //create and append city entry only 
         $city = array(); 
         $city['Id'] = $result['city_id']; 
         $city['name'] = $result['city_name']; 
         $city['country_id'] = $result['country_id']; 
         array_push($entry['Cities'], $city); 
        } 
    
    } 
    
    } 
        //display and check the expected results 
          echo json_encode($data); 
    
+0

Превосходное спасибо тонне Sunder –

0

использовать как этот

<?php 

    include_once("config.inc.php"); 

    $sql = "SELECT * FROM country"; 
    $sqlCity = "SELECT * FROM city"; 

    $cityQuery = mysqli_query($conn, $sqlCity); 
    $sqlQuery = mysqli_query($conn, $sql); 

    $mainArray = array(); 

    if(mysqli_num_rows($cityQuery) > 0){ 
     $cityResponse = array(); 
     while($resCity = mysqli_fetch_assoc($cityQuery)){ 
      $cityResponse[] = $resCity; 
     } 

    if(mysqli_num_rows($sqlQuery) > 0){ 
     $response = array(); 
     while($res = mysqli_fetch_assoc($sqlQuery)){ 
      $response[] = $res; 
     } 
     foreach($cityResponse as $city){ 
      foreach($response as $country){ 
       if($city['country_id'] == $country['id']){ 

        $mainArray = array("Cities" => $city); 
       } 
      } 
     } 

     echo json_encode(array('result'=>'true','Cities'=>$mainArray)); 
    } 
    }else{ 

     echo json_encode(array('result'=>'false','Cities'=>$response)); 
    } 


?> 
+0

Я думаю, что что-то не так в ответном ответе кода, показывающем мне {"response": [{"id ":" 1" , "имя": "Индия"}, { "ID": "2", "имя": "США"}, { "ID": "3", "имя": "Великобритания"} ], {"Города": {"id": "15", "name": "Manchester", "country_id": "3"}} "success": true} –

Смежные вопросы