在PHP中将多个返回的MySQL行添加到同一数组键元素中


Adding multiple returned MySQL rows to the same array key element in PHP

我有一个MySQL数据库,里面有几个"加热配置文件",每个配置文件都在自己的表中,还有一个单独的表来跟踪每个配置文件的名称。

因为我的jQuery Mobile/Cordova HTML5页面是根据要显示给用户的配置文件数量及其内容动态加载的,所以我避免了任何名称等的硬编码

$con = mysqli_connect($server, $username, $password);
mysqli_select_db($con, $database);
$result = mysqli_query($con, "SELECT * FROM PROFILENAMES")
     or die ("Query error: " . mysqli_error($con));
    while($row = mysqli_fetch_assoc($result)) {
        $string = $row['profileNames'];
        $data[] = $string;
        $string = str_replace(' ', '', $string);
        $profileNames[] = $string;
    }
    foreach($profileNames as $secondstring){
        $secondstring;
        $secondresult = mysqli_query($con, "SELECT * FROM $secondstring ORDER BY startTime ASC")
            or die ("Query error: " . mysqli_error($con));
        while($secondrow = mysqli_fetch_assoc($secondresult)) {
                $data[$secondstring] = $secondrow;
        }
    }  
mysqli_close($con);
echo $_REQUEST['jsoncallback'] . '(' . json_encode($data) . ');';

理论上,如果配置文件"SELECT*"中有多行,则"while"循环应将每一行都附加到关键字为$secondstring的数组$data中。但是,无论我尝试什么,JSON中只返回一行,我已经执行了echo等操作,以确保正在检索数据,事实上,$secondrow包含所有行,但在第一行附加到数组后,它似乎停止了。

此代码的当前输出为:

({"0":"Weekday","1":"Weekend","2":"Different","Weekday":{"setTemp":"26","startTime":"17:00:00","endTime":"19:00:00"},"Weekend":{"setTemp":"900","startTime":"12:00:00","endTime":"13:00:00"},"Different":{"setTemp":"666","startTime":"23:00:00","endTime":"02:00:00"}});

有没有什么方法可以强制额外的行附加到那个特定的数组键上?

对每一行使用递增或唯一的键值会使在另一端用javascript解析这些数据并将其插入HTML元素变得更加困难。

任何帮助都将不胜感激!很抱歉格式化,不确定发生了什么。

只需构建一个数组:

    while($secondrow = mysqli_fetch_assoc($secondresult)) {
            $data[$secondstring][] = $secondrow;
                                ^^---- add this
    }

每个新的"第二行"都将被推送到该子数组上。