2012-08-01 65 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

相关问题