【问题标题】:Adding multiple returned MySQL rows to the same array key element in PHP将多个返回的 MySQL 行添加到 PHP 中的同一数组键元素
【发布时间】: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


【解决方案1】:

只需构建一个数组:

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

每个新的“第二行”都会被推到那个子数组上。

【讨论】:

  • 我就知道事情会这么简单!玩了几个小时,但我自己要花更长的时间才能得到它。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
  • 2023-03-10
  • 2012-02-22
  • 1970-01-01
  • 2019-11-02
  • 1970-01-01
  • 2018-03-12
相关资源
最近更新 更多