在一个 json 对象中两次查询 mysql,并在 Codeigniter 中检索每个详细信息

问题描述 投票:0回答:2

我有两个表,我想将它们转换为 json,如下所示:

$first_query = $this->db->query("SELECT * FROM `parameters` WHERE patient_id=7 ORDER BY created_on DESC LIMIT 10");
$second_query = $this->db->query("SELECT * FROM `pat_details` WHERE email='".$email."' AND phone_num='".$phone_num."'");

$first_query 返回应存储在数组中的 10 组记录,$second_query 返回对象。我需要将两个查询 mysql 合并在一个对象 json 中并检索结果的详细信息。

输出应该是:

[
 {
  "firstname":"xyz",
  "id":"123456",
  "mail":"[email protected]",
  "parameters":[
     {
        "diabetic":"no",
        "hypertension":"yes",
     },
     {
        "diabetic":"no",
        "hypertension":"yes",
     },
     {
        "diabetic":"yes",
        "hypertension":"no",
     }
  ]
 }
]

我无法将这两个查询聚合为一个并将结果编码为 json

php arrays json codeigniter object
2个回答
2
投票

您可以使用连接查询或子查询。由于数据彼此不相关,因此这不会带来巨大的性能优势。

如果您只想组合数据,将数据返回或转换为数组,请对两个数组使用 array_merge(),然后使用 json_encode()

并确保您的查询免受 SQL 注入的影响。我建议使用 CodeIgniter 查询生成器来使数据库交互更简单、更安全。


0
投票

我找到了解决方案

$first_query = $this->db->query("SELECT * FROM `parameters` WHERE patient_id=7 ORDER BY created_on DESC LIMIT 10");
$json= $firstquery->result();
$second_query = $this->db->query("SELECT * FROM `pat_details` WHERE email='".$email."' AND phone_num='".$phone_num."'");

 $json2 = array();
 foreach($secondquery->result_array() as $row){
   $json2[] = array( 
    'name' => $row['name'],
    'address' => $row['address'],
    'mail' => $row['mail']
);
}
 $json['parameters'] = $json2;
 echo json_encode($json);
© www.soinside.com 2019 - 2024. All rights reserved.