2011-11-02 145 views
-1

我有一條sql語句,它返回一些記錄,每個記錄具有10個屬性。我如何獲取數據並將其放入二維數組中。目前我在做這個:php 2d數組...將mysql結果存儲在2d數組中

while($row1 = mysql_fetch_array($result1)) 
{ 
    echo $row1[0][1]; //There is an error here 
} 

是$ row1是2D數組嗎? (這應該是因爲我得到n * m結果)。如果$ row1是一個二維數組,那麼我不應該能夠訪問$ row [0] [1]?

+0

會發生什麼,如果你的print_r的$ ROW1? – swatkins

回答

0

從文檔:

從結果集中取得一行作爲關聯陣列,數字數組,或兩者

如果mysql_fetch_array正在恢復1一排數據,你期望第二個維度是什麼?

首先你需要驗證你得到的是什麼樣的數組,然後你就可以理解爲什麼你的密鑰是無效的。嘗試使用print_rvar_dump來檢查$ row1。

0

$row1一次只保存一條記錄,所以它是一個常規的一維數組。

如果查詢返回

a b c 
d e f 

在while循環的第一次迭代,row1持有a b c,並在第二次迭代,它擁有d e f,單維數組。

+0

如何將其更改爲2d數組? – jkjk

+0

查看Marc B關於如何將它製作成二維陣列的答案 – xbonez

1

mysql_fetch數組返回一維數組,從查詢結果中返回一個單行數據的索引+鍵值組合索引值。例如做

選擇場,場2,字段3 FROM sometable

,並在結果上做了mysql_fetch_array會給你一個數組,看起來像:

$row1 = array(
    0 => 'value of field1', 
    1 => 'value of field2', 
    2 => 'value of field3', 
    'field1' => 'value of field1' 
    'field2' => 'value of field2', 
    'field3' => 'value of field3' 
) 

如果你想解決整個結果集一個數組,你必須獲取的每一行,並將其添加到陣列的第一:

$data = array(); 
while($row1 = mysql_fetch_array($result)) { 
    $data[] = $row1; 
} 

這將讓你做$data[0][1](第2場[1]第一記錄的[0])