0

我承认,我不知道关于 MySQL 查询或 JSON 的大量信息,但我想知道。目前,当我从数据库中获取数据时,我查询一个表,该表将值带入另一个查询,依此类推。我认为这不是接收我需要显示的所有数据的最佳做法。下面是我的 MySQL 查询当前如何在 PHP foreach 函数中工作的示例: 在此处输入图像描述

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

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

4

2 回答 2

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);
?>
于 2013-01-15T22:48:12.080 回答
0

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

在 Friends 表中,您必须有配置文件的 id 以表明是什么配置文件的朋友。

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

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

于 2013-01-15T22:47:37.487 回答