【问题标题】:Why does my code have a Limit of 1 with writing it?为什么我的代码在编写时的限制为 1?
【发布时间】:2019-06-08 17:14:45
【问题描述】:

我有一个代码应该从 mysql 数据库表中读取所有行。 但是,它并没有显示表格中的所有数据。

$array 应该包含所有行,但只包含第一行。

我的 module_cmds 数据库中有三行

+--------+------+----+--------------------+
| module | hash | id | serverId           |
+--------+------+----+--------------------+
| music  |    1 |  1 | 231870365863903232 |
| rule34 |    1 |  2 | 231870365863903232 |
| logs   |    1 |  3 | 231870365863903232 |
+--------+------+----+--------------------+

仅供参考,count($reponses) = 1

尝试更改 ORDER BY

仅供参考,$array,之前在代码中使用过,但我认为它不会改变什么

$array = array();
    $reponses = $bdd->query('SELECT * FROM module_cmds WHERE serverId=' . $donnees['server_id'] . ' ORDER BY module');
    while ($donnee = $reponses->fetch()){
                $array_param = array();
                $reponses = $bdd->query('SELECT * FROM module_params WHERE idModule=' . $donnee['id']);
                while ($donne = $reponses->fetch()){
                        $array_param_in = array( 'param' => $donne['paramName'],
                                                        'value' => $donne['value']);
                        array_push($array_param,$array_param_in);
                }
        $array_in = array( 'module' => $donnee['module'],
                        'hash' => $donnee['hash'],
                        'params' => $array_param);
        array_push($array,$array_in);
    }

对于 ORDER BY 模块,答案是

"modules":[{"module":"logs","hash":"1","params":[]}]

对于 ORDER BY id,答案是

"modules":[{"module":"music","hash":"1","params":[]}]

答案应该是

"modules":[{"module":"logs","hash":"1","params":[]},
           {"module":"music","hash":"1","params":[]},
           {"module":"rule34","hash":"1","params":[]},]```

我认为错误来自SQL,但是

'SELECT * FROM module_cmds WHERE serverId = 231870365863903232 ORDER BY module'

工作正常。

我的错误在哪里?这是我对 Php 中的数组一无所知的事情吗?一些错字?有几行我忘记了?

仅供参考,我有一个类似的代码,我不会在另一个 SQL 表中进入,它在那里完美运行。

【问题讨论】:

  • 查找连接,通过连接,DBMS 可以一次性计算出结果集,您不需要对每一行进行第二次查询,这很昂贵。
  • 您在循环内覆盖$reponses,因此您将永远看不到其他ID。使用 2 个不同的变量名称或按照建议使用 JOINS。
  • 是的,这就是覆盖问题。谢谢。也会尝试加入。

标签: php sql arrays pdo


【解决方案1】:

尝试在第二个 while 循环中更改 $reponses

【讨论】:

  • 谢谢,确实是这个问题
猜你喜欢
  • 2022-01-06
  • 2020-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多