我有一张表,其中包含所参加考试的详细信息。输入到此表中的每项考试都是作为一对人员输入的,即每次考试由两个人进行,因此每次考试都有两个人。每个人参加的每次考试都有自己唯一的 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_id 的值。当我将电子邮件更改为只有一个电子邮件的其他人时,它不会返回任何内容。
我希望对 1, 2 的结果做的是使用这些值来选择除原始人 (eating@gnomes.com) 之外的所有其他人,并从该表中显示他们的详细信息。
我要问的是,由于我以前没有做过类似的事情,我将如何去做上述事情?
最佳答案
在这两个代码片段中,第 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_id
- 学生姓名
- 学生电子邮件
- student_whatever
- partner_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';
但是你真的应该分开你的 table 。您有两个实体(一个学生和一个考试)和一个连接表。
学生
- ID
- 姓名
- 电子邮件
考试
- ID
- 姓名
- (其他考试数据)
学生组
- 考试 ID
- student_id
- 群组
关于php - 从一个条件中选择多个值 (PHP/MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16319818/