0

我在数据库上有一个选择,如下所示:

$result = mysql_query("                 
SELECT dat_eb_registrants.id, dat_eb_registrants.first_name,  
    dat_eb_registrants.last_name, dat_eb_registrants.email, dat_eb_registrants.comment,   
    dat_eb_registrants.amount, dat_eb_registrants.published,   
    dat_eb_registrants.transaction_id, dat_eb_registrants.register_date,   
    dat_eb_field_values.field_value   
FROM dat_eb_registrants LEFT JOIN dat_eb_field_values 
  ON dat_eb_registrants.id=dat_eb_field_values.registrant_id
WHERE dat_eb_field_values.field_id='53' AND `event_id` >= 20 AND `event_id` <= 25
ORDER BY $sort $ascdsc
");

它会显示在一个 html 表中,如下所示: echo " ID First name Last name Email Comment Value1 Value2 Value3 ";

而 ($row = mysql_fetch_row($result)) {

echo "<tr>";
echo "<td>" . $row[0] . "</td>";
echo "<td>" . $row[1] . "</td>";
echo "<td>" . $row[2] . "</td>";
echo "<td>" . $row[3] . "</td>";
echo "<td>" . $row[4] . "</td>";

echo "<td>" . $row[9] . "</td>";

echo "<td>" . $row[?] . "</td>";
echo "<td>" . $row[?] . "</td>";
echo "</tr>";
echo "</table>";

}

现在,前 4 个值可以正确显示,就像第 5 个一样,但是第 6 个和第 7 个呢?它们没有被 MYSQL 调用,因为它们dat_eb_field_values.field_value只被调用一次,并且被赋值为 WHERE dat_eb_field_values.field_id='53

如何使用数据库中的其他值完成表格?

在此先感谢,劳伦特

4

2 回答 2

0

如果我理解正确,您正在尝试为每个人加载多个值。这些值位于单独表的多行中。

您需要使用GROUP BY子句。JOIN注册人表和值表就像你现在做的那样,在WHERE子句之后GROUP BY是注册人的 id。当然,不要将其限制WHERE为某个值的 ID,因为那样您将不会获得任何其他值。最后,您可以使用GROUP_CONCAT()将所有值行获取到单个结果值中,由,. 您可以将其更改为分隔符,</td><td>以使其更容易放入您的表格中。

SELECT registrants.name, GROUP_CONCAT(values.value SEPARATOR '</td><td>')
FROM registrants
LEFT JOIN values USING (registrant_id)
WHERE ...
GROUP BY registrant_id
于 2013-01-03T16:26:25.603 回答
0

Voitek Zylinski 的回答是我认为最好的方法。但你可以为每个尝试一个。

while ($row = mysql_fetch_row($result))
{
    echo "<tr>";
    foreach($row as $row_item)
    {
        echo "<td>".$row_item."</td>"
    }
    echo "</tr>";
}

无论有多少领域,这都会起作用

于 2013-01-03T16:31:48.453 回答