php - 从一个条件中选择多个值 (PHP/MySQL)

标签 php mysql database select conditional-statements

我有一张表,其中包含所参加考试的详细信息。输入到此表中的每项考试都是作为一对人员输入的,即每次考试由两个人进行,因此每次考试都有两个人。每个人参加的每次考试都有自己唯一的 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/

相关文章:

php - 读取php文件并查找mysql

php - 如何在 Raspbian wheezy 上安装 PHP 5.6?

php - 如何使用来自 MySQL 数据库的数据使用 fusioncharts 创建组合图(条形图和折线图)?

mysql - PHP 关联数组 : special character?

php - 大字符串 : Text files or SQL DB?

database - Azure 流分析输出到 Azure Cosmos DB

php - 最长时间() | PHP

php共享数据库连接(设计模式帮助)

mysql - 选择一行及其周围的行

ruby-on-rails - 如何获取数据库中的原始 'created_at' 值(不是转换为 ActiveSupport::TimeWithZone 的对象)