如何在php中从不同的数据库表中获取特定的、唯一的数据

如何在php中从不同的数据库表中获取特定的、唯一的数据,php,mysql,sql,database,Php,Mysql,Sql,Database,我想从数据库中获取数据。三个表都链接在一起。 我面临着这个问题,我尝试了很多方法来解决它,比如合并、唯一和单独列表。 下面是代码 <?php $conn=new mysqli("localhost","root","","db"); $rows=$conn->query("select Account,Amount, event_name,event_description from donations LEFT JOIN accounts

我想从数据库中获取数据。三个表都链接在一起。 我面临着这个问题,我尝试了很多方法来解决它,比如
合并、唯一和单独列表
。
下面是代码

<?php
$conn=new mysqli("localhost","root","","db");

$rows=$conn->query("select Account,Amount, event_name,event_description from donations
                    LEFT JOIN accounts
                    ON accounts.ID_Account=donations.ID_Account
                    LEFT JOIN events
                    ON events.event_id=donations.event_id ");
$rows1=$conn->query("SELECT Account from accounts");

while((list($Account, $Amount, $event_name,$event_description)=$rows->fetch_row()) and (list($Account)=$rows1->fetch_row()))
{   
echo "<tr><td> $Account</td><td> $Amount </td><td>$event_name</td><td>$event_description</td></tr>";    
}   
?>

现在的问题是,它显示了来自帐户的重复数据,而且我希望它就像帐户
$Amount
没有捐赠一样
$account
它不应该在
帐户前面显示捐赠,但它正在显示。有没有办法让它按我想要的方式工作?

非常感谢。

您正在寻找一些数据水合方法。现在,您将获得A*B*C=X行和结果数据,因为您正在进行多个联接,并且从mysql生成的数组将始终只有一个维度,因此会有大量重复数据

您需要的是具有多个维度的数组(或对象)。我假设您想要一个具有以下内容的结果数组:

$result = array(
    'account1' => array('event1', 'event2'),
    'account1' => array('event3', 'event4', 'event5')
);
有多种解决方案:

  • 编写自己的数据合并方法,用结果中的值创建一个新数组
  • 执行三个单一查询,而不是使用JOIN执行一个查询,然后合并结果(甚至可以更快!)
  • 使用条令(一个php数据库抽象层),它可以不费吹灰之力地做您想要做的事情
  • 如果你开始编写新的应用程序,我建议你:


    例如,如果一个帐户有多个事件,您将得到该帐户的多行-这就是您得到的吗?我得到随机数据,就像它显示所有捐赠一样,无论它是否属于该帐户,我想要的数据,如帐户->其捐赠->事件,如果没有捐款的帐户,那么只有帐户应显示。谢谢我会尝试他们,让你知道。顺便说一句,从上面的代码中,我得到了随机数据,比如它显示了所有捐赠,无论它是否属于该帐户,我想要的数据是帐户->其捐赠->事件,如果该帐户没有捐赠,那么只显示该帐户。我尝试了第二种方法,但结果是相同的,即随机数据,而1和3很难理解。虽然我稍后会尝试1和3,但我现在需要一些简单可靠的东西。你能发布你使用的三张表吗?