将MySQL结果保存在2D数组中 - php

时间:2014-09-12 16:11:23

标签: php mysql

我试图将查询结果提取到我的数据库。当结果集只有1行时,我没有遇到任何问题,但是当它有多行时,我只得到第一行。

这是我的db:

-----keys-------------------
|  id  |  key_nbr |  date  |
----------------------------
|  42  |  abc123  |  xxxx  |
|  49  |  789xyz  |  wxyz  |
----------------------------

我的功能:

function get_key_info($mysqli) {
   if (isset($_SESSION['user_id'], $_SESSION['username'], $_SESSION['login_string'])) {
       $user_id = $_SESSION['user_id'];
       if ($stmt = $mysqli->query("SELECT id, key_nbr, date FROM keys WHERE id=$user_id")){
           $row = $stmt->fetch_array(MYSQLI_ASSOC);
           return $row;
       }
   }
   return null;
}

执行print_r($row);时的输出只是第一行:

Array ( [id] => 42 [key_nbr] => abc123 [date] => xxxx)如何让它打印所有行?

1 个答案:

答案 0 :(得分:2)

您必须在获取数据之前检查总行数,如果它不为零,则执行循环并获取所有记录。

function get_key_info($mysqli) {
   if (isset($_SESSION['user_id'], $_SESSION['username'], $_SESSION['login_string'])) {
       $user_id = $_SESSION['user_id'];
       if ($stmt = $mysqli->query("SELECT id, key_nbr, date FROM keys WHERE id=$user_id")){
           if($stmt->num_rows != 0) {
               $row = array();
               while($r = $stmt->fetch_array(MYSQLI_ASSOC)) {
                   $row[] = $r;
               } 
               return $row;
           }
       }
   }
   return null;
}