我正在使用php和mysql数据库制作预订系统。系统有多个用户可以登录并进行预订,因此我想知道一种基于用户会话选择记录的方法。目前它只选择所有预订记录,这意味着用户可以访问所有预订。
我有一张预订表,其中包含预订记录和一张包含用户凭据的用户表。还有一种方法可以从两个表中选择记录
答案 0 :(得分:1)
在您的用户表格中,您应该拥有唯一的ID。
在预订表上,您有一个字段用户ID。添加预订时,会将用户ID保存到该字段中。
然后,当您想要检索预订时,您可以选择与特定用户ID匹配的记录。
在预订表上有一个用户ID字段称为foreign key。这是你用sql做很多事情的基础。通过这种方式进行设置,您可以执行所谓的join。在这里,您可以从两个或多个表中获取所有数据,并根据键值组合行。所以在你的情况下你可以这样做:
SELECT * FROM users,bookings WHERE bookings.id=users.id;
这将为您提供包含所有预订数据的记录,以及进行预订的用户的所有用户数据。你也可以这样做:
SELECT * FROM bookings where users.id=3;
这将为您提供身份3的用户的所有预订数据。
您也可以匹配其他字段,但保留该外键作为联接,以保证您始终在预订和用户之间获得正确的链接,例如。
SELECT * FROM users,bookings WHERE users.surname="Doe" AND bookings.id=users.id;
您也可以反过来使用它 - 例如,如果您想获得在给定日期预订的所有人的用户详细信息,您可以执行以下操作:
SELECT * FROM users WHERE bookings.date='03/03/2015' AND users.id=bookings.id;
正如您所看到的,将该用户ID添加到预订表会打开很多可能性,因为它将您的数据链接在一起,允许您将数据作为单个记录获取,即使它已分割为多个表。
答案 1 :(得分:0)
您需要为数据库中的每个用户创建一个唯一的ID。使用Primary Key
并将其设置为自动增量。
在登录后检查有效凭据后,从数据库中获取其ID并将其存储在会话变量中。
使用用户ID列创建预订表。为预订分配用户ID。如果要查询其预订,请在查询中包含其用户ID。