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()。

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

我正在寻找的是这个:

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

现在我需要将它们放入数组

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

4

2 回答 2

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;
    }
}
于 2012-05-27T15:41:41.953 回答
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所做的确切结构和数据。

于 2012-05-27T14:35:30.173 回答