2016-03-30 23 views
1

2つの異なるmysqlクエリを使用する配列を作成、保存、出力するにはどうすればよいですか?2つのクエリのPHP配列にMySQL結果を格納

私は簡単な例を作りました。

$select1 = "SELECT country_id, country_name FROM countries ..."; 
while ($select1) { 
    ...store country results in array... 

    $select2 = "SELECT city_id, city_name FROM cities where '" . $select1['country_id'] . "'..."); // depends on select1 
    while ($select2) { 
    ...store city results in array... 
    } 

} 

**output something like this:** 

country_id = 1 
country_name = United States 

    city_id = 1 
    city_name = New York 

    city_id = 2 
    city_name = Las Vegas 

country_id = 2 
country_name = Canada 

    city_id = 3 
    city_name = Ottawa 
+0

あなたはすべての国のすべての都市が権利を取得したいですか? – itzmukeshy7

答えて

1

エラーをチェックしているか、クエリーを準備中かエスケープしているかわかりませんが、そうしてください。

あなたはこれでそれを行うことができ、あなたの配列を生成するには:あなたは国IDや都市のIDを知っていればすることができます、また

foreach ($list as $country_id => $country_info) { 

     echo "Country ID: $country_id<br />"; 
     echo 'Country Name: ' . $country_info['country_name'] . '<br />'; 
     echo 'Country Cities:<br />'; 

     $cities = $country_info['country_cities']; 

     foreach ($cities as $city_id => $city_info) { 

       echo " City ID: $city_id<br />"; 
       echo ' City Name: ' . $city_info['city_name'] . '<br />'; 
     } 

     echo '<br />'; 
    } 

:あなたが行うことができますあなたの配列を表示するには

$list = []; 
    $countries = $link->query("SELECT country_id, country_name FROM countries ..."); 

    while ($country_row /*fetch from $countries*/) { 

     $country_id = $country_row['country_id']; 

     $country_info = [ 
       'country_id' => $country_id, 
       'country_name' => $country_row['country_name'], 
       'country_cities' => [] 
     ]; 

     $cities_stmt = "SELECT city_id, city_name FROM cities where $country_id..."; 
     $cities = $link->query($cities_stmt); 

     while ($city_row /*fetch from $cities*/) { 

      $city_id = $city_row['city_id']; 

      $country_info['country_cities'][$city_id] = [ 
        'city_id' => $city_id, 
        'city_name' => $city_row['city_name'] 
      ]; 
     } 

     $list[$country_id] = $country_info; 
    } 

をdo:

0

(あなたがコメントで尋ねたとして)のforeachを使用して、これらをバック印刷するためにしたがって、基本的に、

$select1 = mysqli_query("SELECT country_id, country_name FROM countries"); 
while ($country_row = mysqli_fetch_array($select1, MYSQLI_ASSOC)) { 
    $array[$country_id]['country_id'] = $country_row ['country_id']; 
    $array[$country_id]['country'] = $country_row['country_name']; 

    $select2 = mysqli_query("SELECT city_id, city_name FROM cities where '" . $select1['country_id'] ."' "); // depends on select1 
    while ($city_row = mysqli_fetch_array($select2, MYSQLI_ASSOC)) { 
    $array[$country_id]['cities'][]['city_id'] = $city_row['city_id']; 
    $array[$country_id]['cities'][]['city_name'] = $city_row['city_name'] 
    } 
} 

...あなたの配列のキーとしてあなたのCOUNTRY_IDを使用して、あなたは両方をループしなければなりません配列のレベル

foreach($array as $country){ 
    //Loop through the countries that we queried and stored 
    echo 'Country Name: '.$country['country_name'].'<br/>'; 
    echo 'Country ID: '.$country['country_id'].'<br/>'; 
    echo 'Cities in country: <br/>'; 
    //Loop through the cities within this country 
    foreach($country['cities'] as $city){ 
     echo 'City ID: '.$city['city_id'].'<br/>'; 
     echo 'City Name: '.$city['city_name'].'<br/>'; 
    } 

} 
+0

foreach()で配列を出力するにはどうしたらいいですか? – petsk

+0

'foreach($ arr as $ a){ $ a ['country']; //国 $ a ['country_id']; //国ID foreach($ a ['cities'] $都市){ } }「 – Imperialized

+0

」急いでいると答えた理由は何ですか?あなたの答えは、あなたが基本をすでに知っていない限り、それほど役に立ちません。基本を知っていれば、この質問はしません。これは誰にも役立たないでしょう。それは、私と同じ答えを求めている人を悩ますだけです。 – petsk

0

1つのクエリの出力を取得し、ネストループ内の別のクエリにメールをマージすることは反パターンです。参加使用します

select country_ID, country_name, 
    City_Id, city_name 
From countries cn 
Inner join cities ct 
On CT.country_id = cn.country_ID 

を次に....

$cities=array(); 
$country_names=array(); 

While($r=mysqli_fetch_array($handle)) { 
    $country_names[$r['country_id']]=$r['country_name']; 
    If (!is_array($cities[$r['country_id'])) $cities[$r['country_id']]=array(); 
    $cities[$r['country_id']][$r['city_id']]=$r['city_name']; 
} 
関連する問題