2

私の農業関連の Android アプリでは、ユーザーは作物の名前を PHP Web サービスに送信し、その Web サービスはその作物に関する詳細を返す必要があります。

データベースのサンプル構造は次のとおりです。

Crop_Master:Crop_Id , Crop_Name , Seed_Rate , Fertilizer
Pest: Crop_id , Pest_Name

これで、PDO の fetchAll() 関数について知り、データが単一のテーブルからのものである場合は JSON 配列に変換します。

このように: ここでデータは Crop_Master テーブルから取得され、正常に動作します。

$query1="select seed_rate,fertilizer_dosage from crop_master where crop_id='$crop_id'";

$res=$db->query($query1);

$output=$res->fetchAll(PDO::FETCH_ASSOC);

print(json_encode($output));

しかし、データが複数のテーブルから来ている場合、単一の「出力」配列を作成する方法がわかりません。

次のような JSON 配列を作成するとします。

[
   {
      "seed_rate":"value_from_db"
      "fertilizer":"value_from_db"
      "pests":
              [{"pest_name:"value_from_db"}
               {"pest_name:"value_from_db"}
                .
                .
                .
               ]
    }
]

次に、複数のクエリを実行して単一の出力配列を作成するにはどうすればよいでしょうか?

4

1 に答える 1

2

配列要素「害虫」を配列 $output に追加して入力する必要があります...方法は、データベース構造によって異なりますが、おそらく次のようなものです

$query1="select seed_rate,fertilizer_dosage from crop_master where crop_id='$crop_id'";    
$res=$db->query($query1);    
$output=$db->fetchAll(PDO::FETCH_ASSOC);

$query2="select pest_name from pests, crop_pests where pests.pest_id = crop_pests.pest_id and crop_pests.crop_id='$crop_id'";    
$res=$db->query($query2);    
$output["pests"]=$db->fetchAll(PDO::FETCH_ASSOC);

print(json_encode($output));

つまり、ポイントは、害虫の配列を $output 配列の要素として持つ必要があるということです。もちろん、私の $query2 は単なる例であり、データベースに合わせて調整する必要があります

于 2013-02-20T04:59:39.580 に答える