【问题标题】:select multiple values from one condition (PHP/MySQL)从一个条件中选择多个值(PHP/MySQL)
【发布时间】:2013-04-25 13:11:20
【问题描述】:

我有一张表格,其中包含所参加考试的详细信息。输入此表的每项考试都以一对人的形式输入,即每次考试执行两个人,因此每次考试都有两个人。每个人参加的每门考试都有自己唯一的 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) 之外的所有其他人,并从该表中显示他们的详细信息。

我要问的是,由于我以前没有做过这样的事情,我该怎么做?

【问题讨论】:

    标签: php mysql database select conditional-statements


    【解决方案1】:

    在两个代码 sn-ps 中,您在第 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'];
    }
    

    如果你的表结构如下:

    • 身份证
    • student_id
    • 学生姓名
    • student_email
    • 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';
    

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

    学生

    • 身份证
    • 姓名
    • 电子邮件

    考试

    • 身份证
    • 姓名
    • (其他考试数据)

    学生组

    • exam_id
    • student_id

    【讨论】:

    • 谢谢你,成功了。我将如何使用这些值,对于 eating@gnomes.com 将是 12 来从考试合作伙伴行中挑选出考试表,以便我可以将它们回显到页面上?
    • 我收到子查询返回超过 1 行的 SQL 错误。表结构或多或少与您暗示的一样。我要做的是使用 12 来选择这两个的所有字段,在这种情况下,考试伙伴的 eat@gnomes.com。一个人可以有更多的合作伙伴,或者在考试表中只有一个。希望能更清楚一点。感谢您到目前为止的帮助。
    • 哦。我以为一个学生只有一个伙伴。那么你的表中可能有一个exam_id 字段。您想要某人拥有的所有考试伙伴,还是只希望他的伙伴参加一次考试?
    • 当我尝试使用 PHP 时,我得到“mysql_query(): Unable to save result set”和“mysql_fetch_assoc() 期望参数 1 是资源,给定的布尔值”。我还尝试了 SQL(必须更正两者的字段名称)来获取某人的合作伙伴并在行中出现“在 '== 'eating@gnomes.com' LIMIT 0, 30' 附近使用正确语法的语法错误4"。获取所有对按预期工作。编辑以回应您的回复:他们拥有的所有合作伙伴。是的,exam_id 字段是 AI,因此每个人都不同,但 partner_id 是每个不同伙伴的相同。
    • 是的,exam_id 字段是 AI,因此每个人都不同,但每个不同的 partnership 的 partner_id 是相同的。希望这是有道理的。如果您仍然不确定,请询问。
    猜你喜欢
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多