2012-05-27 29 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)。 –