2012-08-11 86 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行號,在那裏發生解釋錯誤。