【发布时间】:2015-06-04 22:33:57
【问题描述】:
我有一个 MySQL 数据库,其中包含一些“加热配置文件”,每个配置文件都在自己的表中,并且有一个单独的表来跟踪每个配置文件的名称。
因为我的 jQuery Mobile / Cordova HTML 5 页面是根据要显示给用户的配置文件数量及其内容动态加载的,所以我避免对名称等进行任何硬编码。这是 PHP:
$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”循环应该将每行附加到数组 $data 的键 $secondstring 处。但无论我尝试什么,只有一行在 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 元素中变得更加困难。
任何帮助将不胜感激! 抱歉格式化,不确定那里发生了什么。
【问题讨论】:
-
为什么不简化这一点,不在循环中执行这些查询,而是使用第一个查询的连接来在单个查询中返回所有结果?也就是说,您的问题在于您使用相同的索引值
$secondstring覆盖循环中的每个条目。 -
好久没用SQL了,有机会我会研究一下,谢谢!
标签: php mysql arrays json html