PDO没有显示任何可以帮助我的数据:
$ClanData_users = sql::db()->prepare('SELECT * FROM clan_game INNER JOIN clan_page ON clan_game.clan_home = clan_page.id ORDER BY clan_game.date ASC');
$ClanData_users->execute();
$q = ($ClanData_users);
$content .= '<table class="forum"><tbody><tr class="bericht-content"><td> Kalender</td></tr>';
while($r = $q->fetch()){
$content .= '<tr><td><span class="beschrijving"><p> '.$r['clan_game.clan_home'].' '.$r['clan_challenger'].' '.ucfirst(strftime("%A %H <b>%B</b> %Y | %R", strtotime($r['date']))).' </p></span></td></tr> ';
}
$content .= '</tbody></table>';
答案 0 :(得分:2)
SELECT *
查询中JOIN
通常不是一个好主意。相反,要具体说明所需的列,并在名称重叠时为它们指定别名。在获取后,您无法通过$r['table_name.column_name']
使用表名访问它们。关联列仅在$r['column_name']
中由列名或别名提供,因此所有列名/别名必须是唯一的。
$ClanData_users = sql::db()->prepare('
SELECT
/* If both tables have the same column name, use an alias */
clan_game.id AS clan_game_id,
clan_home.id AS clan_home_id,
clan_game.clan_home AS clan_home,
clan_challenger,
/* etc... Be specific and alias as necessary */
FROM clan_game
INNER JOIN clan_page ON clan_game.clan_home = clan_page.id
ORDER BY clan_game.date ASC');
提取时,只使用列名或别名
// Why reference $ClanData_users as $q here? That's confusing. Just fetch from $ClanData_users
while($r = $ClanData_users->fetch(PDO::FETCH_ASSOC)){
$content .= '<tr><td><span class="beschrijving"><p> '.$r['clan_home'].' '.$r['clan_challenger'].' '.ucfirst(strftime("%A %H <b>%B</b> %Y | %R", strtotime($r['date']))).' </p></span></td></tr> ';
}
答案 1 :(得分:0)
如果$r
为false,则查询未成功。此时我们无法判断您的代码有什么问题,因为我们没有您的数据库架构。
SQL语法对我来说似乎很好。
了解问题所在的唯一方法是尝试在PhpMyAdmin中运行查询。