2015-02-08 85 views
-1

我正在使用php和mysql製作預訂系統。該系統將涉及從MySQL檢索不同用戶的預訂記錄。我目前在選擇不同用戶的預訂時遇到困難。我想根據用戶登錄來選擇記錄。我已經使用了下面的代碼,它應該從表格預訂以及用戶會話中選擇記錄。但是,此代碼不顯示任何預訂。選擇並顯示來自2個不同表格的記錄

$sqlquery = "SELECT * FROM bookings,users where users.id= ".$_SESSION['loggedInUser'].""; 

$results = $mysqli->query($sqlquery); 

我一直面對這個問題一段時間,我真的想選擇用戶登錄做的預訂。

+0

你應該在這兩個表之間使用LEFT JOIN:http://www.tizag.com/mysqlTutorial/mysqlleftjoin.php – valicu2000 2015-02-08 18:25:03

+0

你能給我一個例子嗎?請問我該如何使用它 – r93 2015-02-08 18:27:20

+0

登錄用戶有一個預訂,或者用戶可以有多個預訂? – junkystu 2015-02-08 18:30:02

回答

-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']; 
+0

您的WHERE條件否定了您的JOIN選擇。 – Strawberry 2015-02-08 18:55:55

+0

你確定嗎,或者只是說,你可以先寫下一些答案。 – 2015-02-08 21:31:42

+0

我很確定。 '解釋擴展...'接下來是'SHOW WARNINGS;'會證明點 – Strawberry 2015-02-08 22:57:39

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並與$bookingsql查詢結果分配的預訂吧。

這也可以通過子查詢來實現,參見this question作爲示例,但將產品視爲您的用戶和類別作爲您的預訂。

+0

我試過這種方法。 $ sqlquery =「SELECT * FROM bookings,users where users.username =」。 $ _SESSION [ '與loggedInUser'] 「」。但我仍然無法檢索任何記錄 – r93 2015-02-08 19:11:27

+0

我試過了,它無法顯示任何東西 – r93 2015-02-08 19:17:17

+0

對不起,我更新了查詢。這個想法是,用'$ usersql'得到你的用戶,然後用'$ bookingsql'獲得該用戶的預訂。爲了工作,當然需要將用戶標識存儲在'$ _SESSION ['loggedInUser']'中,以防您存儲用戶名或其他內容。 – junkystu 2015-02-08 22:56:20