【问题标题】:Querying more than one MySQL table and encoding the data as JSON查询多个 MySQL 表并将数据编码为 JSON
【发布时间】:2013-01-15 22:32:20
【问题描述】:

我承认,我对 MySQL 查询或 JSON 不太了解,但我愿意。目前,当我从数据库中获取数据时,我查询一个表,该表将值带入另一个查询,依此类推。我认为这不是接收我需要显示的所有数据的最佳做法。下面是我的 MySQL 查询当前如何在 PHP foreach 函数中工作的示例:

那么,有没有更好的方法来完成我想要的查询以及如何将其编码为 JSON?

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: php mysql json


    【解决方案1】:

    据我了解,您的代码正在执行以下操作:

    <?php
    $friends = query("SELECT Friends");
    while($row = fetch_object($friends)){
        $friend_dets = query("SELECT Friend_dets WHERE Friend_ID = $row->Friend_ID");
        $output[] = fetch_assoc($friend_dets);
    }
    echo json_encode($output);
    ?>
    

    这样一来,您的流程就会变得比实际需要的更加复杂。使用JOIN 进行一次查询即可获得所需的所有信息,如下所示:

    SELECT Name, Status, WhateverElseYouWant
    FROM Friends
        JOIN Profiles ON (Friends.friend-profile-id = Profiles.profile-id)
    WHERE Friends.profile-id = MyCurrentProfileID
    

    这将为您提供与MyCurrentProfileID 成为朋友的每个人的姓名、状态和其他任何信息。然后,您只需将结果放入一个数组并json_encode它:

    <?php
    $friends = query($QueryFromAbove);
    while($row = fetch_object($friends)){
        $output[] = fetch_assoc($friend_dets);
    }
    echo json_encode($output);
    ?>
    

    【讨论】:

      【解决方案2】:

      你可以对这个列表进行 1 个 SQL 查询,你能告诉我你的表 Friends 和 Profiles 信息是什么吗?

      在 Friends 表中,您必须有个人资料的 id 以表明是什么个人资料的朋友。

      查询可能类似于:select profile.* from profile, friends, where friends.id_profile = profile.id and profile.id = current-profile-id

      在您的图表中,您使用好友表中的当前个人资料 ID 而不是个人资料,这可能是错误

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-04
        • 2016-04-02
        • 2023-03-05
        • 1970-01-01
        相关资源
        最近更新 更多