2013-07-19 86 views
-3

每當我嘗試運行我的網頁時,都會收到此錯誤。我不確定是什麼原因造成的;我已經試過移動圍繞「和」一堆次,但仍然得到同樣的錯誤...這裏是,它說,該行代碼不斷使其:語法錯誤,意外''

$result = sqlsrv_query($conn, "SELECT * FROM 
           Operator 
           WHERE Username = $_POST['login']" 
        ); 

而且,這裏是完整的錯誤只是爲了好玩:

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), 
       expecting identifier (T_STRING) 
       or variable (T_VARIABLE) or number (T_NUM_STRING) 
+0

旁註:您可能想要清理輸入http://xkcd.com/327/ –

+0

可能的重複[參考 - 此錯誤在PHP中意味着什麼?](http://stackoverflow.com/questions/12769982/參考這是什麼,這是錯誤的意思,在PHP) –

+0

@NullPoiиteя我已經看過這個錯誤的帖子,但其中的大多數是由於人們忘記包括括號或;或者像這樣簡單的 – Llama

回答

4

您使用的是arr['index']查詢裏面所以無論你需要連接的查詢字符串使用其他各地{}arr['index']

你也將需要大約等等報價3210

警告:您直接在查詢中使用$_POST[]沒有 消毒,或逃避引號,學習PDO讓你沒有 不要擔心這些事情了

+1

,但這不會導致一個PHP錯誤... –

+0

我會建議只刪除圍繞數組鍵的單個滴答,並將整個變量包裝在單個滴答。保留正確的SQL語法。像$ result = sqlsrv_query($ conn,「SELECT * FROM Operator WHERE用戶名='$ _ POST [login]'」); –

+1

@AndreasLinden,誰說這是PHP錯誤? –

2

請更換這樣的:

$result = sqlsrv_query($conn, "SELECT * FROM 
           Operator 
           WHERE Username = $_POST['login']" 
        ); 

...這一點:

$result = sqlsrv_query($conn, "SELECT * FROM 
           Operator 
           WHERE Username = :login", 
    array(
     'login' => isset($_POST['login']) ? $_POST['login'] : NULL 
    ) 
); 

不僅代碼將運行 - 你也將避免被黑客入侵。

+0

我有我的頁面上的其他代碼,但謝謝你在安全方面的答覆和幫助 – Llama