Php 一对多关系仅显示第一行

Php 一对多关系仅显示第一行,php,mysql,Php,Mysql,经过多次尝试,我终于可以显示子表中的数据了。我有两个表,用户(父)和用户广告(子) 使用者 -id(主键) -名字 -用户名 -泰尔诺 用户广告 -id(索引) 等等 这是一对多的关系。从表用户到表用户广告。表用户假设根据与表用户中的id匹配的特定id从表useradvert中提取许多行。但是,它只显示useradvert的第一行。无论您如何使用不同的用户名登录,您将始终看到useradvert中的第一行,而不是应该显示的行。告诉你,我是新手。感谢您的帮助。tqs 下面是摘录 $query =

经过多次尝试,我终于可以显示子表中的数据了。我有两个表,用户(父)和用户广告(子)

使用者 -id(主键) -名字 -用户名 -泰尔诺

用户广告 -id(索引) 等等

这是一对多的关系。从表用户到表用户广告。表用户假设根据与表用户中的id匹配的特定id从表useradvert中提取许多行。但是,它只显示useradvert的第一行。无论您如何使用不同的用户名登录,您将始终看到useradvert中的第一行,而不是应该显示的行。告诉你,我是新手。感谢您的帮助。tqs

下面是摘录

$query = "SELECT * FROM users,useradvert WHERE users.id=useradvert.id";

$stmt = $conn->prepare($query); 
$stmt->execute();
$res = $stmt->get_result(); 
$row2 = $res->fetch_array();


$_SESSION['name2'] = $row2['name2'];
$_SESSION['color2'] = $row2['color2'];
$_SESSION['hobby2'] = $row2['hobby2'];
$_SESSION['radiobtn'] = $row2['radiobtn'];
$_SESSION['kupon'] = $row2['kupon'];
$_SESSION['image'] = $row2['image'];
$_SESSION['image2'] = $row2['image2'];
下面是摘录-在同一页上继续

 <?php
  //display record from table- useradveret -(child table)
//    while($row = $res->fetch_array()){



    echo $_SESSION['name2']."<br/>";
    echo $_SESSION['color2']."<br/>";
    echo $_SESSION['hobby2']."<br/>";
    echo $_SESSION['radiobtn']."<br/>";
    echo $_SESSION['kupon']."<br/>";
    echo $_SESSION['image']."<br/>";
    echo $_SESSION['image2']."<br/>";
//  }

我猜您的sql查询不正确。您使用useradvert表的id字段,但这是该表的索引字段。这看起来不对。您应该在useradvert表中为联接设置一个外键userId。那么您的查询应该如下所示:

SELECT * FROM users u
INNER JOIN useradvert ua ON u.id = ua.userId
然后,您应该获得该用户的所有useradvert字段

这两个表应该如下所示:

SELECT * FROM users u
INNER JOIN useradvert ua ON u.id = ua.userId
表用户:

id | name | ... 
1 | Ben | ... 
2 | Markus | ... 
表USERAD:

id | userid | ... 
1 | 1 | ... 
2 | 1 | ... 

useradvert中的userid是在两个表之间创建关系的外键。这有意义吗

尝试使用
$row2=$res->fetch_array()类似于
while($row2=$res->fetch_array()){//Your code}
两者都很好。tq。。我不明白。。你是什么意思@萨蒂。如果我错了,请纠正我。。选择*来自用户。-->我选择*来自…这意味着所有列,对吗?我想我确实选择了所有列。如果我错了,请纠正我..嗨..tq@Kausha Mehta。。哪一部分??当前我正在禁用while部件。我只想根据它们的id获取回显数据;死亡
$res=$stmt->get_result()之后行,并让我知道它显示了什么。您可以编辑您的问题,并在最后添加输出…您可以提供进一步的解释。tq用于共享@b不同。我可能错了。请纠正我。我认为useradvert中的id是外键和索引键。因为在sql中,我将其作为索引键,并将其与用户中的id(PK)关联,因此当我关联它们时,它会自动成为FOERGIN键。那么,我是否会忽略useradvert中的id(索引键)并使用任何字段(只要它不是id(索引)就将其视为外键,并将其与id用户关联)…如果我在这里显示我的sql查询表..这会有帮助吗@b继承人。对不起,打扰你了。但是你能更具体一点吗?请提问。用户广告中的索引不能是外键。您希望有一个userid字段,其中在多行中存储相同的值,从而为一个用户提供多个广告行。索引id是唯一的字段,用作表的主键。是的,如果显示useradvert表,肯定会有帮助