将表结构和数据复制到2D数组中

时间:2012-05-27 14:24:06

标签: php mysql arrays

这里我有一个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()。

有一种更简单的方法,我可以用更少的代码行来做到这一点吗?

我正在寻找的是:

我有一个带有{m_data,m_name,m_file}列的mysql表 我有几行数据

现在我需要让他们进入数组

我的数组将使用列名作为键, 然后我将我的行数据存储到每个键

2 个答案:

答案 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;
    }
}

答案 1 :(得分: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所做的确切结构和数据。