2013-03-09 60 views
1

我的查詢在這裏有什麼問題?這個SQL查詢有什麼問題? (MySQL錯誤)

mysql_query("SELECT * FROM admin_nav1 WHERE Active = 'YES' AND WHERE LinkedID = '$WID' ORDER by 'OrderSet' ASC") or die(mysql_error()); 

我不斷收到此錯誤:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE LinkedID = '6' ORDER by 'OrderSet' ASC' at line 1

回答

5

您應該只有一個WHERE條款。 AND運算符足以區分這兩個條件。

SELECT * 
FROM admin_nav1 
WHERE Active = 'YES' AND LinkedID = '$WID' // <<== one WHERE clause 
ORDER by OrderSet ASC 

一件事,你的查詢將不會正確ORDER行,因爲你有一個單引號從而將其轉換成字符串包裹列名OrderSet。如果您擔心列名稱是否爲保留關鍵字,則可以使用反向包裝或在表格上提供別名,並使用具有該別名的列名來對列進行分隔,但使用而不是引號。

作爲旁註,如果變量的值(s)來自外部,則該查詢容易受到SQL Injection的影響。請看下面的文章,瞭解如何防止它。通過使用PreparedStatements你可以擺脫使用單引號圍繞值。

0

你需要使用,即一旦

SELECT * FROM admin_nav1 
WHERE Active = 'YES' AND ..... 

,然後使用和運營商更多的條件。