2012-08-01 62 views
0

我有一個mysql表,其中包含我預訂系統上所有航班預訂的數據。當用戶預訂航班時,該預訂的詳細信息將與其用戶名一起存儲在該表中。顯示mysql數據,其中用戶名是相同的

現在,我製作一個頁面,其中所有用戶以前的航班都顯示在HTML表格中,除了僅將結果過濾到僅來自該用戶的代碼的代碼外,其他所有內容都可以工作。

這是我正在使用的(部分)代碼;

$query_string = "SELECT name, seats, departure, destination, class, username, miles, timestamp FROM $tablename WHERE username IN ('$username')";

username場是誰預訂航班的用戶名的用戶存儲在何處,以及$username變量包含已登錄用戶的用戶名的電流。我想要做的只是顯示$username匹配username(因此僅顯示當前用戶的預訂)的字段。

當我使用上面的代碼而沒有WHERE username IN ('$username')時,它顯示所有的數據,但是當我添加上面的代碼時,當有匹配時它什麼都不顯示。

如果有人可以幫助解決我的代碼,我將不勝感激。 謝謝!

+0

您能否包含一些來自數據庫的示例數據?另外,如果您從MySQL客戶端執行此操作,您是否能夠獲得所需的行爲? – Dancrumb 2012-08-01 17:31:08

+0

'如何在'用戶名'如'$ username'' – lucemia 2012-08-01 17:34:59

回答

0

您錯誤地使用了ININ比較逗號分隔的字符串或值列表。這可以是文字:

WHERE username IN ('user1', 'user2', 'user3') 

,也可以來自一個子查詢:

WHERE username IN (SELECT username FROM users) 

如果你想完全匹配,您WHERE條款應

WHERE username = '$username' 

如果仍然沒有按不工作,你必須驗證你是否發送了正確的查詢數據庫。

echo $query_string; 
+3

'WHERE x IN('a')'與WHERE x ='a''相同。沒有運營差異。除非OP在$ username中嵌入了通配符,否則兩者的工作原理都是一樣的。 – 2012-08-01 17:34:47

+0

@MarcB這就是爲什麼我建議OP迴應'$ query_string'。 +1不管,因爲這是一個有用的評論。 – Matt 2012-08-01 17:36:06

+2

非常感謝!我使用'echo $ query_string;'並且事實證明我沒有正確地聲明$ username。我忽視了這樣一件基本的事情。再次感謝! – mlazim14 2012-08-01 17:58:27

相關問題