我想从数据库中获取数据三个表都链接在一起。
我遇到了问题,我尝试了许多方法,如merge, unique and separate list
。
以下是代码。
<?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
一样,它不应该在{{1}前显示捐款1}},但它正在显示。有什么方法可以让它以我想要的方式工作吗?
非常感谢。
答案 0 :(得分:0)
您正在寻找一些数据水合方法。现在,您将获得A * B * C = X行的结果数据,因为您正在进行多个连接,并且您生成的mysql数组将始终只有一个维度,因此会有大量重复数据。
你想要的是具有多个维度的数组(或对象)。我假设你想要一个结果数组,如:
$result = array(
'account1' => array('event1', 'event2'),
'account1' => array('event3', 'event4', 'event5')
);
有多种解决方案:
如果您开始编写新应用程序,我会向您推荐3.):
http://doctrine-orm.readthedocs.org/en/latest/tutorials/getting-started.html