【发布时间】:2014-09-11 13:33:45
【问题描述】:
在此处发布问题之前,我进行了几个小时的研究,但没有运气。 让我们从表格中的示例开始,以便您轻松理解我要做什么:
在个人资料表中,我注册了个人资料,他们的 profile_id 是:
约翰123
乔伊
史密斯
哈西
以上个人资料是彼此的朋友,朋友表由两个属性组成,即 profile_one 和 profile 2。以下是他们如何成为朋友:
john123 与 joee 的朋友
john123 与史密斯的朋友
john123 与 hassey 的朋友
hassey 和 joee 的朋友
哈西和史密斯的朋友
当我尝试获取当前登录用户的朋友时,它可以正常工作并使用以下查询返回 true:
$query = $this->db->query("SELECT profile_one, profile_two
FROM friendsTbl
WHERE profile_one = '{$this->myID}' OR profile_two = '{$this->myID}'")
现在我还想获取这些用户的个人资料信息,以便我可以显示他们的名字和姓氏,因此我使用了如下子查询,但是它返回 false 并且我收到错误,即致命错误:调用到非对象上的成员函数 fetch_array()。该错误显示在我使用 while 循环的行上。子查询:
$query = $this->db->query("SELECT profile_id FROM profileTbl
WHERE profile_id IN (SELECT profile_one, profile_two
FROM friendsTbl
WHERE profile_one = '{$this->myID}' OR profile_two = '{$this->myID}')");
上述返回错误和致命错误,如上所述。 非常感谢您的帮助,因为我已经尝试了一天左右但没有任何运气。
注意:我在这个项目中使用类和函数,因此它是面向对象的。
@John,在您修改查询之后。以下是正在输出的内容:
注意:未定义的索引:第 609 行的 profile_one
注意:未定义索引:第 610 行的 profile_one
以下是好友表
+-------+-----------+------------+
| id |profile_one| profile_two|
+-------+-----------+------------+
| 33 | john123 | hassey |
| 34 | john123 | smith |
| 35 | joee | john123 |
+-------+-----------+------------+
以下是配置文件表:
+-------+-----------+-----------+-------------------+
| u_id | f_name | l_name | profile_id |
+-------+-----------+-----------+-------------------+
| 23 | john | larr | john123 |
| 26 | joee | attwo | joee |
| 27 | smith | Mark | smith |
| 28 | hassey | Mess | hassey |
+-------+-----------+-----------+-------------------+
现在我期望的结果是,无论哪个用户通过传递包含用户会话 ID 的 $this->myid 登录,它都会将这些朋友显示给与他们成为朋友的用户。这在我最初发布的原始 sql 语句中有效,但是现在我也希望朋友 f_name 和 l_name 显示哪些将 profile 表中的 profile_id 与朋友表中的 profile_one 或 profile_two 匹配。
【问题讨论】:
-
james,如果你能阅读MY POST 了解如何提出正确的 mysql 问题,我会这样做,这样我就可以编辑/测试我的答案并确保它解决了你的问题