PDO加入不显示任何内容

时间:2012-10-16 13:31:39

标签: php pdo

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>';

2 个答案:

答案 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中运行查询。

相关问题