php - JSON对象作为数组中的数组如何保持while循环继续

标签 php mysql arrays json

我的问题是:

我正在将表连接在一起,有些表有多个我应该获取的数据,但我的 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_incrementidunique 上,它将循环一次......但现在是我失败的部分,需要你的帮助: 在您的连接表: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 个键的数组,alltype

关于php - JSON对象作为数组中的数组如何保持while循环继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55261695/

相关文章:

PHP 内存不足

php - MYSQL复杂联合

php - 带斜杠的 ZF2 路由参数

php - 在 SQL 中搜索字符串以 X 开头的位置

php - PHP 按时间排序表行

php - LEFT JOIN - 排序和分组

mysql - 每个表处理几百万条记录,查询似乎没有工作和优化,但执行时间很长

javascript - 如何将 JSON 对象字符串转换为 Javascript 数组

c++ - 错误 : invalid types 'double*[double]' for array subscript

python - DataFrame 中系列的平均值