我的问题是:
我正在将表连接在一起,有些表有多个我应该获取的数据,但我的 JSON 对象只检索一个。我认为这样做的原因是因为 while 循环也循环遍历我的主表,获取所有内容并停止循环,考虑到没有什么可以循环的(我根据我的 id
中的 id
获取数据)数据库,这些是auto_incremented
等)。
所以我的问题是:
如何循环遍历主表(一次),但继续循环遍历连接表并将这些值插入到它们的“自己”数组中?
这就是我现在所拥有的:
$sqli = "SELECT event.*, typex.id, typex.type
FROM event
JOIN typex ON event.id = typex.id
WHERE event.id = ?";
mysqli_stmt_bind_param($stmt, 's', $editID); //fetch data based on ID
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck > 0) {
$data = array();
while ($row = mysqli_fetch_assoc($result)) {
$data['all'] = array($row);
$data['type'] = array($row['type']);
}
//Echo data as JSON
echo json_encode($data);
给你一个想法:
$data['all']
是保存所有 $row 的数组(这样我可以轻松访问主表中的列)
$data['type']
但是应该只保存来自表 typex 的数据(typex 是一个连接表)。
示例:
您有一个名为:stack
的主表和一个名为typex
的连接表。
您想要将表 stack
中 id 号为 5 的所有行插入到数组 $data['all']
中,考虑到主表有一个 auto_increment
在 id
和 unique
上,它将循环一次......但现在是我失败的部分,需要你的帮助:
在您的连接表:typex
中,您有 2 行,ID 号为 5。应提取这两行并将其插入到数组 $data['type']
中。如何实现这一目标?
最佳答案
$data['all'] = array($row);
$data['type'] = array($row['type']);
这将始终设置最后一个$row
的结果,如果您需要所有行,则需要这样做:
$data[] = array('all'=>$row,'type'=>$row['type']);
现在 $data 的每个项目都是一个带有 2 个键的数组,all
和 type
关于php - JSON对象作为数组中的数组如何保持while循环继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55261695/