0

我有一张桌子,上面有考试的详细信息。输入此表的每项考试都以一对人的形式输入,即每次考试有两个人进行,因此每次考试有两个人。每个人在每次考试中都有自己唯一的 id,但每一对都有一个名为 partner_id 的值,这对他们来说都是相同的。

我要做的是从该表中提取 partner_id 值,以便能够使用这些值来找到所述人的合作伙伴,并在页面上显示/回显该人拥有的每个合作伙伴的考试结果详细信息与考试。

到目前为止,我尝试过的是:

$partner_ider = mysql_query("SELECT partner_id as value1 from exam WHERE Student_email='eating@gnomes.com'");
$row1 = mysql_fetch_array($partner_ider);

while($row1 = mysql_fetch_array($partner_ider))
{
    echo $row1['value1'];
}

和这个:

$result = mysql_query("SELECT * from exam WHERE Student_email='beating@dead.com'");
$row = mysql_fetch_array($result);

while ($row = mysql_fetch_array($result))
{
    echo $row['partner_id'];
}

对于在考试表中有两个条目的电子邮件,这些将给出的结果是 2,我正在寻找的是 1, 2,它们是这封电子邮件考试记录的两个 partner_ids 的值。当我将电子邮件更改为只有一封电子邮件的其他人时,它什么也没有返回。

我希望对 1、2 的结果做的是使用这些值来选择除原始人(eating@gnomes.com)之外的所有其他人,并从该表中显示他们的详细信息。

我要问的是我将如何去做上述事情,因为我以前没有做过这样的事情?

4

1 回答 1

1

在这两个代码片段中,您在第 2 行有一个不应存在的 mysql_fetch_array()。它获取一行,将其放入 $row1 并递增内部指针。

当您在 while 中调用 mysql_fetch_array() 时,它会获取第二条记录,然后是第三条记录,依此类推,直到处理完所有行。

在这两个示例中,您都应该删除第二行并重试。

$partner_ider = mysql_query("SELECT partner_id as value1 from exam WHERE Student_email='eating@gnomes.com'");
//$row1 = mysql_fetch_array($partner_ider);

while($row1 = mysql_fetch_array($partner_ider))
{
    echo $row1['value1'];
}

如果您的表结构如下:

  • ID
  • 学生卡
  • 学生姓名
  • 学生邮箱
  • student_whatever
  • 合作伙伴ID

SQL 查询看起来像

SELECT Student_email FROM exam WHERE partner_id IN (SELECT partner_id FROM exam WHERE student_Email = 'eating@gnomes.com') AND Student_email <> 'eating@gnomes.com';

但是你真的应该分开你的桌子。您有两个实体(一个学生和一个考试)和一个连接表。

学生

  • ID
  • 姓名
  • 电子邮件

考试

  • ID
  • 姓名
  • (其他考试数据)

学生组

  • 考试编号
  • 学生卡
  • 团体
于 2013-05-01T14:28:24.050 回答