PHPBBでは、SQLを編集して、投稿で使用できるデータを取得しようとしています。標準クエリは、3つのテーブル(user_table、post_table、zebra_table)からデータを取得します。各行(投稿)について、PHPBBhtmlファイルを介して使用できる変数にデータを割り当てます。次に例を示します。
'username' => $row['username'],
したがって、HTMLファイルでは{postrow.USERNAME}を使用でき、現在のループ/投稿のユーザー名が表示されます。
標準のクエリは次のようになります。
$sql = $db->sql_build_query('SELECT', array(
'SELECT' => 'u.*, z.friend, z.foe, p.*',
'FROM' => array(
USERS_TABLE => 'u',
POSTS_TABLE => 'p',
),
'LEFT_JOIN' => array(
array(
'FROM' => array(ZEBRA_TABLE => 'z'),
'ON' => 'z.user_id = ' . $user->data['user_id'] . ' AND z.zebra_id = p.poster_id'
)
),
'WHERE' => $db->sql_in_set('p.post_id', $post_list) . '
AND u.user_id = p.poster_id'
));
現在の「user_id」に応じて、「phpbb_profile_fields_data」テーブルから「pf_lol_summoner」値を取得しようとしています。
$sql = $db->sql_build_query('SELECT', array(
'SELECT' => 'u.*, pf.pf_lol_summoner, z.friend, z.foe, p.*',
'FROM' => array(
USERS_TABLE => 'u',
POSTS_TABLE => 'p',
),
'LEFT_JOIN' => array(
array(
'FROM' => array(ZEBRA_TABLE => 'z'),
'ON' => 'z.user_id = ' . $user->data['user_id'] . ' AND z.zebra_id = p.poster_id'
),
array(
'FROM' => array('phpbb_profile_fields_data' => 'pf'),
'ON' => 'pf.user_id = ' . $user->data['user_id']
)
),
'WHERE' => $db->sql_in_set('p.post_id', $post_list) . '
AND u.user_id = p.poster_id'
));
ここで、whileループが行をループし始めると、エコーアウトすると次のようになります。
echo $row['pf_lol_summoner'];
各個人の値ではなく、各投稿の「pf_lol_summoner」値が表示されます。私はそれが私のuser_id(クッキーに設定されている)を使用していると思います。誰か気づいた?
編集:echo $ row ['username']; 他のすべての値とともに、正常に機能します。