Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中继续MYSQL输出_Php_Mysql_Join_Fetch - Fatal编程技术网

在PHP中继续MYSQL输出

在PHP中继续MYSQL输出,php,mysql,join,fetch,Php,Mysql,Join,Fetch,我在数据库上有一个select,如下所示: $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, da

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

$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
");
$result=mysql\u查询(“
选择dat_eb_registrants.id、dat_eb_registrants.first_name、,
dat_eb_注册人。姓氏,dat_eb_注册人。电子邮件,dat_eb_注册人。评论,
dat_eb_注册人。金额,dat_eb_注册人。已发布,
dat_eb_注册人。交易id,dat_eb_注册人。注册日期,
dat_eb_字段值。字段值
从dat_eb_注册人左侧加入dat_eb_字段值
在dat_eb_注册人上。id=dat_eb_字段值。注册人id

其中dat_eb_field_values.field_id='53'和'event_id`>=20和'event_id`如果我理解正确,您正在尝试为每个人加载多个值。这些值位于单独表中的多行中

你需要使用一个
groupby
子句。
JOIN
注册人表和values表,就像你现在做的一样,在
WHERE
子句之后,
groupby
注册人的id。当然,不要将
WHERE
限制为某个值的id,因为那样你就不会得到任何其他值。Fina通常,您可以使用
GROUP_CONCAT()
将所有值行放入一个结果值中,由
分隔。您可以将其更改为由
分隔,以便于放入表中

SELECT registrants.name, GROUP_CONCAT(values.value SEPARATOR '</td><td>')
FROM registrants
LEFT JOIN values USING (registrant_id)
WHERE ...
GROUP BY registrant_id
选择registrants.name、GROUP\u CONCAT(values.value分隔符“”)
来自注册者
使用左连接值(注册者\u id)
哪里
按注册人分组\u id

Voitek Zylinski的答案是,我认为最好的方法是这样做。但你可以为每种方法尝试一种

while ($row = mysql_fetch_row($result))
{
    echo "<tr>";
    foreach($row as $row_item)
    {
        echo "<td>".$row_item."</td>"
    }
    echo "</tr>";
}
while($row=mysql\u fetch\u row($result))
{
回声“;
foreach($row作为$row\u项目)
{
回显“$行\项”
}
回声“;
}

无论有多少字段

调用“dat\u eb\u field\u值,这都会起作用。field\u id='53'或
event\u id
=20'都会有帮助,而不是使用“AND”。或者应该在这里放一些表数据让我们更了解您??看起来我忘了,我编辑了它!
event\u id
=20与字段值无关,只是习惯于这样rt.请注意,
mysql_xxx()
函数正被正式从PHP中弃用。多年来,它们被认为是过时和不安全的,但现在使用它们肯定是不好的做法。如果可能的话,你应该改用
mysqli_xxx()
函数或PDO库。这是简单的吗?”按dat_eb_registents.id“”分组,删除“dat_eb_field_values.field_id='53'”是,并通过
GROUP_CONCAT
更改
SELECT
子句中的值。这样,您将把所有值行合并为一个结果(请参阅我更新的答案)好的,现在我有了:选择dat_eb_注册人。id,dat_eb_注册人。名字,dat_eb_注册人。姓氏,dat_eb_注册人。电子邮件,dat_eb_注册人。评论,dat_eb_注册人。金额,dat_eb_注册人。发布,dat_eb_注册人。交易id,dat_eb_注册人。注册日期,集团(dat_eb_field_values.field_value SEPARATOR“”)来自dat_eb_注册者的左侧将dat_eb_field_值连接到dat_注册者上。id=dat_eb_field_values.registent_id,其中
event_id
=20和
event_id
仍然使用while($row=mysql_fetch_row($result))和echo调用它。$row[9];
while ($row = mysql_fetch_row($result))
{
    echo "<tr>";
    foreach($row as $row_item)
    {
        echo "<td>".$row_item."</td>"
    }
    echo "</tr>";
}