我正在使用php和mysql制作预订系统。该系统将涉及从mysql检索不同用户的预订记录。我目前在选择不同用户的预订时遇到困难。我想根据用户登录选择记录。我使用下面的代码,它应该从表预订和用户会话中选择记录。但是,此代码不显示任何预订。
$sqlquery = "SELECT * FROM bookings,users where users.id= ".$_SESSION['loggedInUser']."";
$results = $mysqli->query($sqlquery);
我一直面对这个问题,我真的想选择用户登录的预订。
答案 0 :(得分:0)
您需要一个数据透视表来将用户与预订相关联:
CREATE TABLE user_bookings (id int PRIMARY KEY AUTO_INCREMENT, booking_id int, user_id int);
我通常最终会使用两个查询,因为它可以更好地构建数据。根据您的网站/应用程序的大小,您可以使用对象关系映射器,因为它可以在内部为您处理数据映射。
如果您只需要预订,您只需从数据透视表中选择并加入像这样的预订
$bookingsql = "SELECT * FROM user_bookings JOIN bookings on bookings.id = user_bookings.booking_id where user_bookings.user_id =" . $_SESSION['loggedInUser'];
如果您还需要用户详细信息,则可以先选择用户,然后运行$bookingsql
查询以获取预订详细信息。
$usersql = "SELECT * FROM users where id= " . $_SESSION['loggedInUser'];
然后,根据您使用的框架/数据库驱动程序,将$usersql
查询结果转换为名为$user
的数组,并使用{{1}的结果为其分配预订查询。
这也可以通过子查询实现,请参阅this question作为示例,但请将产品视为您的用户,将类别视为您的预订。
答案 1 :(得分:-1)
要选择已登录用户进行的预订:您应该尝试INNER JOIN
:
$sqlquery = "SELECT b.* FROM bookings b
INNER JOIN users u ON u.id_user = b.user_id
WHERE u.id_user= ".$_SESSION['loggedInUser'];