将MySQL查询结果存储在关联数组中

时间:2012-03-29 09:57:30

标签: php arrays

假设我有一个MySQL表,用户,就像这样 -

-----------------------------------------
ID      | FirstName    | LastName
-----------------------------------------
1       | ABC          | XYZ
2       | DEF          | LMN
3       | GHI          | PQR
-----------------------------------------

我可以使用像

这样的简单MySQL查询来获取结果
  

SELECT ID,FirstName,LastName FROM Users

现在我要找的是将查询结果存储在关联数组表单中。结构将是这样的 -

Array
(
[ID] => Array
(
[0] => FirstName
[1] => LastName
)
)

所以上面的查询结果应该存储在这样的数组中 -

Array
(
  [1] => Array
  (
  [0] => ABC
  [1] => XYZ
  )
  [2] => Array
  (
  [0] => DEF
  [1] => LMN
  )
  [3] => Array
  (
  [0] => GHI
  [1] => PQR
  )
)

我知道array_push。但我想知道是否需要使用它。怎么能得到这个结果?

3 个答案:

答案 0 :(得分:1)

您必须输入数据库连接信息,可能会稍微更改SQL语句和while循环中的列名。

$db = @new mysqli('HOST', 'USER', 'PASS', 'DBNAME');
$res = $db->query("SELECT * FROM `Users`");

$yourdata = array();

if ($res && $db->errno == 0) {
   while ($row == $res->fetch_object()) {
      $yourdata[$row->ID] = array(0 => $row->firstname, 1 => $row->lastname);
   }
}

答案 1 :(得分:1)

$result = mysql_query('SELECT ID, FirstName, LastName FROM Users');

$data = array();
while ($row = mysql_fetch_assoc($result)) {
  $id = array_shift($row); // Shifts first element
  $data[$id] = $row; 
}

您可以在较短版本$data[array_shift($row)] = $row;

中使用内部

答案 2 :(得分:0)

这比您想要的更加联想:)

$temp = array();
$arr = array();

$r = mysql_query("<your query>");
while ($row = mysql_fetch_assoc($r))
{
   $temp['fname'] = $row['FirstName'];
   $temp['lname'] = $row['LastName'];
   $arr[$row['ID']] = $temp;
   unset($temp);
}

应输出

Array (
   [1] => Array (
       [fname]   => ABC
       [lname]   => XYZ
   )
)
.
.
.
etc