0

ここにMySQLデータベースがあり、多くの行を取得する必要があります。

1つの配列にスタックするデータが必要です。

$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 に答える