2

在我与农业相关的 Android 应用程序中,用户将作物的名称发送到 PHP 网络服务,该网络服务应返回有关该作物的详细信息。

这是数据库的示例结构。

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 回答