gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:50:50 26 4
gpt4 key购买 nike

我想从数据库中获取数据,三个表都链接在一起。我遇到了问题,我已经尝试了很多方法来解决它,例如 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>";
}
?>

现在的问题是,它显示了来自帐户的重复数据,而且我希望它就像没有为帐户 $Account 捐赠 $Amount 一样Account 前不显示捐赠,但它正在显示。有什么办法可以让它按照我想要的方式工作吗?非常感谢。

最佳答案

您正在寻找一些数据水化方法。现在您将获得 A * B * C = X 行以及您的结果数据,因为您正在进行多重连接,并且您从 mysql 得到的数组将始终只有一个维度,因此有很多重复数据。

你想要的是不止一维的数组(或对象)。我假设您想要一个包含以下内容的结果数组:

$result = array(
'account1' => array('event1', 'event2'),
'account1' => array('event3', 'event4', 'event5')
);

有多种解决方案:

  1. 编写您自己的数据水合方法以使用您的结果中的值创建一个新数组
  2. 使用 JOIN 执行三个单一查询而不是一个查询,然后合并结果(甚至可以更快!)
  3. 使用 doctrine(一个 php 数据库抽象层),它可以毫不费力地做你想做的事。

如果您开始编写新应用程序代码,我会向您推荐 3.):

http://doctrine-orm.readthedocs.org/en/latest/tutorials/getting-started.html

关于php - 如何从php中的数据库不同表中获取特定和唯一的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28173350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com