查询多个MySQL表并将数据编码为JSON

时间:2013-01-15 22:32:21

标签: php mysql json

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

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

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

2 个答案:

答案 0 :(得分: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);
?>

答案 1 :(得分:0)

你可以为这个列表进行1次SQL查询,你能告诉我你的朋友和个人档案信息。

在“朋友”表格中,您必须拥有个人资料才能指明个人档案的信息。

查询可能如下:选择个人资料。*来自个人资料,朋友,其中friends.id_profile = profile.id和profile.id = current-profile-id

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