【发布时间】:2021-08-18 15:04:59
【问题描述】:
我有两个表 ERRORS 和 PRODUCTS,它们由两列相关联(error_code 和 issue)我想使用 php 获取响应 json。这些是我的文件:
表格:
错误:
| id_error | error_code | issue | cause | solution |
|---|---|---|---|---|
| 1 | A01 | issue1 | cause1.1 | solution1.1 |
| 2 | A01 | issue1 | cause1.2 | solution1.2 |
| 3 | A01 | issue1 | cause1.3 | solution1.3 |
| 4 | A02 | issue2 | cause2.1 | solution2.1 |
产品:
| id_error | product | issue |
|---|---|---|
| A01 | P1 | issue1 |
| A01 | P2 | issue1 |
| A02 | P1 | issue2 |
这是我的 .php 文件
<?php
include('functions.php');
//$tipo = $_GET['txtTi'];
$array = array();
if ($resultset = getSQLResultSet("
SELECT errors.error_code,
errors.issue,
errors.cause,
errors.solution,
products.error_code,
products.product,
products.issue
FROM errors
JOIN products
ON errors .issue = products.issue
AND errors.error_code = products.error_code
WHERE errors.error_code = 'A01'")
){
$p = array();
$c = array ();
$s = array();
while ($row = $resultset->fetch_array(MYSQLI_NUM)){
$e = array();
$e['error_code'] = $row[0];
$e['issue'] = $row[1];
$c['cause'] = $row[2];
$e['cause'] = $c;
$s['solution'] = $row[3];
$e['solution'] = $s;
$p['product'] = $row[5];
$e['products'] = $p;
array_push($array,$e);
}
echo json_encode($array);
}
?>
我有这个 json:
[
{
"error_code":"A01",
"issue":"issue1",
"cause":{
"cause":"cause1.1"
},
"solution":{
"solution":"solution1.1"
},
"products":{
"product":"P1"
}
},
{
"error_code":"A01",
"issue":"issue1",
"cause":{
"cause":"cause1.2"
},
"solution":{
"solution":"solution1.2"
},
"products":{
"product":"P1"
}
},{
"error_code":"A01",
"issue":"issue1",
"cause":{
"cause":"cause1.3"
},
"solution":{
"solution":"solution1.3"
},
"products":{
"product":"P1"
}
},
(...)
]
但这是我想要的 json
[
{
"error_code":"A01",
"issue":"issue1",
"cause":{
"cause":"cause1.1",
"cause":"cause1.2",
"cause":"cause1.3"
},
"solution":{
"solution":"solution1.1",
"solution":"solution1.2",
"solution":"solution1.3"
},
"products":{
"product":"P1",
"product":"P2"
}
}
]
【问题讨论】:
-
您的预期结果中是否涉及数据库关系?如果没有,您可以只获取每个表中的所有行,对吗?
-
它们由两列相关联(error_code 和 issue) 这种组合在两个表中都不是唯一的。因此,您必须在单独的子查询中获取不同的值对并将其用作基础。
-
@AymDev 他们参与 error_code 和 issue 列,以获得我需要的产品。然后我想检索 json 数组中的所有产品
-
@Akina 单独的子查询是什么意思并将其用作基础?可以举个例子吗?
-
同一数组级别中不能有重复的键。例如,您不能将
solution和solution作为同一子数组中的键。我建议您只制作索引子数组。
标签: php mysql sql json inner-join