2012-08-11 69 views
0

我试图将$ username变量与当前会话用户名(登录帐户的用户名)相匹配。与当前会话匹配表的列

我使用下面的代码,但得到解析错误:语法错误,意想不到的T_ENCAPSED_AND_WHITESPACE,期待T_STRING或T_VARIABLE或T_NUM_STRING

$result = mysql_query("SELECT * FROM settings WHERE $username = $_SESSION['username']") 
+0

更多关于你遇到的错误将是很好的。而且,将直接变量投射到查询中是一个非常糟糕的做法。 – favoretti 2012-08-11 22:58:09

+0

@favoretti你会做什么,而只是从数据库中提取用户名匹配当前用户的行? – 2012-08-11 23:00:49

+0

查询没有错(除了我答案中的内容),但是我会通过http://www.php.net/manual/en/mysqli.real-escape- string.php只是为了安全起见。 – favoretti 2012-08-11 23:03:20

回答

2

三个非常明显的错误,我在这里看到:

$username查询将被PHP评估为PHP的$username变量的值,您显然没有这个变量,然后将其评估为“”。

$_SESSION['username']应被引用(“”或“'),因为它显然是一个字符串值。

而且,我已经重写此为:

$result = mysql_query("SELECT * FROM settings WHERE username = '" . $_SESSION['username'] . "'"); 

话虽这么说,你不希望从任何PHP变量传递直接查询,而无需先消毒它们。这是一个注入天堂。

[编辑]

而且,看到你的错误信息的错误可能是在其他地方。除非你真的错过了;在你的行结束。另外,那个错误应该给你确切的PHP行号,在那里发生解释错误。