【发布时间】: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