我有一个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
}
每个新的"第二行"都将被推送到该子数组上。