【问题标题】:PHP Selecting and Inner joining tables Issue.PHP 选择和内部连接表问题。
【发布时间】:2018-11-17 17:47:11
【问题描述】:

我正在尝试让它获得所有用户的比赛规则,但它只选择我数据库中的第一个条目,然后当我根据该注册加入两个表时它只显示一个条目。 关于我如何能够获得所有用户的 tours_regid 的任何想法?

这是我目前拥有的:

   <?

    $stmt = $DB_con->prepare('SELECT tournament_regid, paid FROM tournament_registration WHERE userid= :session_id');
        $stmt->bindParam(':session_id', $_SESSION['user']['id']);   
        $stmt->execute();
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
    {
        $regid = $row['tournament_regid'];
        ?>  

        <?
        $stmt = $DB_con->prepare("SELECT * FROM tournament_registration JOIN tournaments ON tournament_registration.tournament_regid = tournaments.tournamentid WHERE tournaments.tournamentid = :regid");
        $stmt->bindParam(':regid', $regid);
        $stmt->execute();
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
    {

            ?>

        <h1> Event Name: <? echo $row['tournament_name'];?> </h1>
        <h1> Event Date: <? echo $row['tournament_date'];?> </h1>
        <h1> Event Time: <? echo $row['tournament_time'];?> </h1>
        <h1> Event Desc: <? echo $row['tournament_dec'];?> </h1>
        <h1> Paid: <? echo $row['paid'];?> </h1>
        <h1> <? echo $row[''];?> </h1>
        <a href="viewevent.php?event_id=<?php echo $row['tournament_regid'];?>"> VIEW Event Details  </a>
        <h1>
        <?php echo $regid;?>
        </h1>
        <?
    }
    }
        ?>

更新的 SQL 查询:现在的问题是它看起来像是在获取每个人的东西?因为现在有很多数据显示。

<? 
$stmt = $DB_con->prepare("

SELECT 
   *
FROM
   users
INNER JOIN
    tournament_registration ON tournament_registration.userid = :userid
INNER JOIN
    tournaments ON tournaments.tournamentid = tournament_registration.tournament_regid
");
$stmt->bindParam(':userid', $_SESSION['user']['id']);
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{

        ?>

【问题讨论】:

  • 您在循环中覆盖了$stmt。使用不同的变量名。您也可以通过一个查询来做到这一点。
  • 在循环中运行查询通常是代码/查询设计不佳的信号。尝试重写您的 SQL 查询以仅进行一个数据库查询,然后使用 PHP 显示您想要的数据。
  • @FelippeDuarte 我能做的是内部加入用户表并选择他们的用户 ID,然后加入锦标赛注册和锦标赛?
  • 使用where 过滤数据,而不是on
  • @user3783243 当我将其从 on 更改为停止显示信息的位置时。我把它改成了这个SELECT * FROM users INNER JOIN tournament_registration WHERE tournament_registration.userid = :userid INNER JOIN tournaments WHERE tournaments.tournamentid = tournament_registration.tournament_regid

标签: php mysql


【解决方案1】:

“选择 锦标赛注册.锦标赛_注册 从 用户 内部联接 锦标赛注册 ON 锦标赛注册.userid = users.userid 内部联接 锦标赛上锦标赛.tournamentid =锦标赛注册.tournament_regid "

使用这个更新的 sql 查询来实现它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多