在我的与农业相关的Android应用中,用户将作物的名称发送到PHP webservice,该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"}
.
.
.
]
}
]
然后,如何运行多个查询并生成单个输出数组?
答案 0 :(得分: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当然只是一个例子,需要针对您的数据库进行调整