web-dev-qa-db-ja.com

MySQLの結果からPHP多次元配列

次のようなmysqlテーブルがあります。

id | uid | title     | description | parent
1  |  1  | Portraits | desc.       | photostream
2  |  1  | Abstract  | descr.      | photostream

そして、私は次のように見える多次元配列を構築しようとしています:

Array
(
      [0]
          [id] => 1
          [uid] => 1
          [title] => Portraits
          [description] => desc.
          [parent] => photostream
      [1]
          [id] => 2
          [uid] => 1
          [title] => Abstract
          [description] => descr.
          [parent] => photostream
)

私は選択クエリを使用しています:

$query = mysql_query(
  "SELECT * FROM `table` WHERE `uid`='1' ORDER BY `id` DESC");

誰もこれを行う方法を知っていますか?ありがとう、レヴィ

26
Levi Self
$query = mysql_query("SELECT * FROM table WHERE uid = '1' ORDER BY id DESC");
$results = array();
while($line = mysql_fetch_array($query, MYSQL_ASSOC)){
    $results[] = $line;
}
26
KeatsKelleher

これには、データを収集するためのsql関数は含まれていませんが、問題のテーブルを作成しました(まったく同じ問題でした)これは、私のテーブルでもあります。そのため、説明よりも例です。

これは説明に完全ではありませんが、サンプルコードです。


テーブル:
[ID |親|名前| href |題名 ]


コード:

            foreach ($query->result_array() as $row)
{
    if ($row['parent'] === null)
        $data[$row['id']][0]= '<a href="'.$row['href'].'"'.($row['title']!==null)?'title="'.$row['title'].'"':''.'>'.$row['name'].'</a>';
    else 
    {
        $temp = '<a href="'.$row['href'].'"'.($row['title']!==null)?'title="'.$row['title'].'"':''.'>'.$row['name'].'</a>';
        array_Push($data[$row['parent']],$temp);
    }
}

これを使用して、navbarのリンクを生成しました。次に、関数を使用して、それらから複数レベルのリストを作成しました。私の問題のために。よく似た問題ですが、これが私の解決策でした。

もしよければ。独自のバージョンを作成する代わりに。代わりに、データ用のデータベーススキームを使用して同様のコードを作成できます。

警告:これは、現時点では2レベルのレイアウトでのみ機能するようです。コードをさらに即興で作成し、スニペットの次のバージョンを投稿します。

1
CoasterChris
$query = mysql_query("SELECT * FROM table WHERE uid = '1' ORDER BY id DESC");
$results = array();
$num_fields=mysql_num_fields($query);
$num_rows=mysql_num_rows($query);
while($line = mysql_fetch_array($query)){

for($i=0;$i<$num_rows;$i++
{
  for($j=0;$j<$num_fields;$j++
  {

  $results[$i][$j]=$line[$i][$j];
  }

}

}
0
novice