PHP查询以数组格式返回数据库

时间:2016-03-06 20:29:23

标签: php mysql arrays

让我说我查询我的数据库,得到以下结果

+---+---+-------+
| N | M | score |
+---+---+-------+
| 0 | 2 |    14 |
| 1 | 0 |    22 |
+---+---+-------+

执行$res = $db->query($query);后,无论如何都要将此信息存储在数组中。例如,我尝试过这样做

      $array = array();    
      while ($row = mysql_fetch_array($res, MYSQL_NUM)) {
            array_push($array, array($row[0], $row[1], $row[2]));
      }

因为我有这个想法,每当它将一行提取到一个数字数组时,

第一行

$row[0] = 0 , $row[1] = 2, $row[2] = 14

第二行

$row[0] = 1, $row[1] = 0, $row[2] = 22

如果我错了,请纠正我,因为我很确定我错了:O

编辑:为什么我要问$ row包含什么是因为我想将每一行存储到一个数组中以形成一个多维数组。例如,在{"E":[[0,1,86],[1,0,96]]}之后json_encode。所以为了做到这一点,我需要将每一行作为一个数组推入另一个数组,即将第一行作为数组[0,1,86]推入$array,然后将第二行推送为数组[1,0,96] 。我怀疑我可以通过做一个关联数组来实现这一点。如果我错了,请再次纠正我。

1 个答案:

答案 0 :(得分:0)

您的代码非常正常(我认为mysql_fetch_array是一个错字。)

唯一的注意事项:您必须在$array循环之前初始化while,否则您的array_push将失败。

因此,您的代码正常运行,但评论中提供的解决方案更好,因为更短更有效:使用mysql_fetch_array您已经获得了所需的数组,因此您只需将其添加到数组中,指定每个键。另外,根据php docs$array[] =语法比array_push()更有效,如果只向阵列添加一个元素。

$array = array();
while( $row = mysqli_fetch_array( $res, MYSQL_NUM ) )
{
    $array[] = $row;
}

如果您愿意,可以使用mysqli_fetch_all()获得相同的结果:

$array = mysqli_fetch_all( $res, MYSQLI_NUM );

[编辑:]显然,最后两个解决方案只有在您想要检索查询返回的所有字段时才有效。

[编辑2:]要获得所需格式的JSON,只需在代码末尾添加此行:

$json = json_encode( array( 'E' => $array ) );