如何将多行MySQL数据库放入多维数组(PHP)?

时间:2014-09-13 05:57:45

标签: php mysql multidimensional-array

我正在研究一个系统,在该系统中,查询检查数据库中是否有匹配多个ID的记录,并将每一行放入其自己的数组中。到目前为止,我只有最后一行在它自己的数组中回显。这是查询代码:

$query = "SELECT * FROM messages WHERE senderid IN ($senderids) ORDER BY messageid DESC";
$resource = mysql_query($query, $database);
$result = mysql_fetch_array($resource);
foreach($result as $result1)
    {
    print_r($result1);
    echo '<br>';
    }

这就是浏览器中的回声:

2
2
1
1
TEST MSG 2
TEST MSG 2
2014_09_13_01:29:59
2014_09_13_01:29:59

这应该回应:

Array ([messageid] => 1 [senderid] => 1 [message] => test message [date] => 2014_09_13_01:01:09)
Array ([messageid] => 2 [senderid] => 1 [message] => TEST MSG 2 [date] => 2014_09_13_01:29:59)

我将如何解决此问题?

2 个答案:

答案 0 :(得分:1)

mysql_fetch_array不返回整个结果集,只返回当前光标处的行。你的代码没有移动mysql游标;要做到这一点,你的代码应该是:

$resource = mysql_query($query, $database);
while($row = mysql_fetch_array($resource)){
  print_r($row);
  echo '<br />';
}

此外,对于您发布的所需输出,您应该使用mysql_fetch_assoc,因为它将是具有列名而不是索引数组的哈希

答案 1 :(得分:0)

$query = "SELECT * FROM messages WHERE senderid IN ($senderids) ORDER BY messageid DESC";
$resource = mysql_query($query, $database);
while($result = mysql_fetch_array($resource))
{
print_r($result);    // OR $array[] = $result; and print $array outside the while loop 
}