悪い英語と悪いタイトルを残して申し訳ありません!MySQL 3つのテーブルから選択し、それをPHP配列に入れます
私はそう"タグ"
tagid tagname
1 test
2 russia
3 new site
はので、私はからの配列が必要post_tags
tagid postid
1 1
2 1
3 1
を持っているテーブル "ポスト"
id title
1 test Thread
2 hello
3 just
を持っています次のvar_dump:
$posts = array(
1 => array(
'title' => 'test Thread',
'tags' => array(
'test', 'russia', 'new site',
),
),
2 => array(
'title' => 'hello',
'tags' => NULL
),
3 => array(
'title' => 'just',
'tags' => NULL
),
)
私はそれをやっているが、私はそれが私が望むものではない。次の次の
SELECT `post`.`id`, `post`.`title`, `tags`.`tagname` FROM `post`
LEFT JOIN `post_tags` ON `post_tags`.`tagid` = `post`.`id`
LEFT JOIN `tags` ON `post_tags`.`tagid` = `tags`.`tagid`
私はSQLで取得:
id title tagname
1 test Thread test
1 test Thread russia
1 test Thread newsite
2 hello NULL
3 just NULL
PHP
$query = mysql_query("SELECT `post`.`id`, `post`.`title`, `tags`.`tagname` FROM `post`
LEFT JOIN `post_tags` ON `post_tags`.`tagid` = `post`.`id`
LEFT JOIN `tags` ON `post_tags`.`tagid` = `tags`.`tagid`");
$posts = array();
while ($row = mysql_fetch_assoc($query))
{
$posts[] = $row;
}
var_dump($posts);
ありがとうございました!!!
mysqlデータベースから多次元配列を戻すことはできません。そのフォームに必要な場合は、結果に対して独自の後処理を行う必要があります。 – dqhendricks
FYI:エスケープテーブル/フィールド名は、予約語を使用している場合にのみ必要です。すべてをバッククォートにダンプするだけで、そのクエリーが読みにくくなります。 –