0

我只需要使用 PHP 和 MySQL 创建一个嵌套或多级列表。我怎样才能让这个显示所有客户,然后显示与每个给定客户相关的所有电话号码。

例如:

约翰

555 555-5555

666 666-6666

克里斯汀

777 777-7777

艾米

888 888-8888

999 999-9999

222 222-2222

<?php
$result = mysqli_query($dbc,"
SELECT 
fname,
phone
FROM 
customer,
phone,
customer_phone
WHERE
customer.id=customer_phone.customer_id
AND
phone.id=customer_phone.phone_id
");
while($row = mysqli_fetch_array($result))
{
echo $row['fname'];
echo "<br />";
echo $row['phone'];
echo "<br />";
}
?>
4

2 回答 2

0

查看 order by 以及我如何仅在第一次出现时打印名称。另外,学习使用“on”子句正确加入。

<?php
$result = mysqli_query($dbc,"
SELECT fname, phone
FROM customer
join customer_phone on customer.id=customer_phone.customer_id
join phone on customer_phone.phone_id=phone.id
order by fname
");
$oldname = null;
while($row = mysqli_fetch_array($result))
{
    if($oldname != $row['fname'])
    {
        echo $row['fname']."<br>";
        $oldname = $row['fname'];
    }
    echo $row['phone']."<br>";
}
?>
于 2013-03-21T01:50:11.050 回答
0

我会做一个客户课程,这样我可以存储更多信息,而不仅仅是电话或姓名

class Customer {
   public $phone = array();
   public $name = '';
}
while($row = mysqli_fetch_array($result))
{
$customerList[$row['fname']] = new Customer;
$customerList[$row['fname']]->name = $row['fname'];
array_push($customerList[$row['fname']]->phone, $row['phone'])
}

但是你也可以只做一个简单的数组,键是客户姓名,值是客户电话的数组,如果你没有其他想要存储的话

于 2013-03-21T01:53:28.683 回答