2014-09-13 115 views
0

我正在查詢檢查數據庫中匹配多個ID的記錄並將每行放入它自己的數組的系統上。到目前爲止,我只有最後一行才能在自己的數組中進行回顯。下面是查詢代碼:如何將多行MySQL數據庫放入多維數組(PHP)中?

$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) 

我如何去解決這個問題?

+0

只爲fyi ....你的代碼是打開的SQL注入...搜索mysqli_或PDO查詢。 – NoobEditor 2014-09-13 06:29:50

+0

@NoobEditor $ senderid變量在代碼中使用mysql_real_escape_string進行轉義。 – rn10950 2014-10-16 01:34:39

回答

1

mysql_fetch_array不返回整個結果集,只是當前光標處的行。你的代碼不會移動mysql遊標;要做到這一點,你的代碼應該是:

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

另外,對於您發佈所需的輸出,你應該使用mysql_fetch_assoc,而不是因爲它會與列名的哈希值,而不是一個索引數組

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 
}