PHP - 无法链接表以获取所需信息

时间:2016-05-19 16:17:21

标签: php mysql

方案

用户可以表示有兴趣参加活动的晚宴,管理该活动的人可以选择接受他们的请求,如果请求已经被接受,则接受"接受"然后应禁用该按钮。

什么工作

一切正常,直到需要禁用按钮的部分,信息显示正确,我很难连接数据库表,以便我可以使用我需要的信息来禁用按钮。

尝试

这就是我的查询

SELECT
r.id as request_id,
r.status as dinner_status,
r.dinner_id,
d.name as dinner_name,
d.date as dinner_date,
u.first_name as user_first_name,
u.last_name as user_last_name,
u.id as user_id,
u.description as user_description,
u.profile_image as user_profile_image,
c.name as user_college_name,
c.id as user_college_id,
c.slug as user_college_slug
FROM `requests` r
LEFT JOIN `college_dinners` d ON r.dinner_id = d.id
LEFT JOIN `user` u ON r.guest_id = u.id
LEFT JOIN `college` c on u.college_id = c.id
WHERE d.college_id = $collegeId
AND u.id = '77'

现在是最重要的部分。

有一个名为invitations的表,只有在他们的晚餐请求被排除后才会保留guest_iddinner_id。我如何利用这个invitations表来更新我的查询并在其中包含我可以在我的视图上启用和禁用按钮的信息?

PHP尝试

我愿意在PHP中自己解决这个问题,所以我决定使用foreach循环来获取我从上面的查询得到的结果,并在foreach内创建另一个查询表格invitations然后使用if我正在检查当前循环的dinner_id是否与dinner_id匹配,而guest_id的{​​{1}}是否与foreach匹配在foreach ($invitations as $invitation) { $invitatedSQL="....."; if ( $invitedResult['guest_id'] == $invitation['user_id'] && $invitedResult['dinner_id'] == $invitation['dinner_id'] ) { $isInvited = 'yes'; } } 内部进行查询,但是通过这样做,索引变得紧张。

 If Cells(2, 1).Value = "M" And Cells(2, 2).Value = "son" Then
        MsgBox "You've found a mistake"
      else
        MsgBox "Keep checking"
    End If

请注意我在前端不需要任何帮助,它只是我遇到问题的mysql查询。我非常感谢你对此事的任何帮助

1 个答案:

答案 0 :(得分:3)

只是一个简单的左连接。如果条件为false,则会有NULL。

LEFT JOIN `invitations` i on r.guest_id = i.guest_id AND r.dinner_id = i.dinner_id

P.S。 您的LEFT JOIN很少有人像普通INNER JOIN那样行事。你应该阅读有关差异的内容 What is the difference between "INNER JOIN" and "OUTER JOIN"?