2012-05-27 31 views
0

在這裏我有一個MySQL數據庫,我需要檢索很多行。複製表格結構和數據到二維數組

我需要的數據在一個陣列中疊起來:現在

$query_sel_node = "SELECT * FROM $table_name";     
$result_data = mysql_query($query_sel_node); 

$data_rec = array("data" => array(), "data_h" => array(), "file" => array(), "ptr" => array(), "name" => array()); 
while($data_fetched = mysql_fetch_assoc($result_data)) 
       { 
        array_push($data_rec["data_h"], $data_fetched['data_h']); 
        array_push($data_rec["data"], $data_fetched['data']); 
        array_push($data_rec["file"], $data_fetched['m_file_thumb']); 
        array_push($data_rec["ptr"], $data_fetched['m_pointer']); 
        array_push($data_rec["name"], $data_fetched['m_name']); 
       } 

,我已經添加了很多列到我的表,這意味着我需要array_push()爲每一個欄我做了。

有沒有更簡單的方法,我可以用更少的代碼行來做到這一點?

我正在尋找的是這樣的:

我有一個MySQL表列{M_DATA,m_name,m_file} 和我有數據

的幾行,現在我需要他們進入陣列

我的陣列將使用的列名中的密鑰,然後 我將我行的數據存儲到每個按鍵

+0

什麼是您查詢是什麼樣子? –

+0

更新了我的問題,再次檢查 – tom91136

回答

1

首先,讓所有從所需的表列名:

SELECT 
    COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
    table_name = '$table_name' 

構建陣列($table)與列名和分配一個空數組的每個的一個(數據):

$columns_query = mysql_query($the_above_query); 
$table = array(); 
while ($column = mysql_fetch_row($columns_query)) 
    $table[$column[0]] = array(); 

獲取數據對於每列,並將其插入到$table陣列:

foreach (array_keys($table) as $column) 
{ 
    $query_sel_node = "SELECT $column FROM $table_name";     
    $result_data = mysql_query($query_sel_node); 

    while ($data = mysql_fetch_row($result_data)) 
     $table[$column][] = $data[0]; 
} 

現在,$table將包含確切結構和數據,該表$table_name一樣。

+0

如果我想要整行,該怎麼辦?你的方法還在工作嗎?如果是的話,我該如何創建$ data_rec數組讓我的查詢在 – tom91136

+0

中這樣放置,我如何創建一個$ data_rec數組,其中包含我的表的所有列?不需要自己輸入.... – tom91136

+0

所以你想把整個表作爲一個關聯數組? –

2

即使不是查詢信息架構或使用的mysql_fetch_field更好,試試這個:

$query_sel_node = "SELECT * FROM $table_name"; 
$result_data = mysql_query($query_sel_node); 
$data_rec = array(); 
while($data_fetched = mysql_fetch_assoc($result_data)) { 
    foreach($data_fetched as $k=>$v) { 
     $data_rec[$k][] = $v; 
    } 
} 
+0

這絕對更緊湊,只查詢數據庫一次,而不是(列數+ 1)。 –