2014-07-25 99 views
0

我用一個簡單的SQL子句檢索用戶ID,MySQL的SQL語法問題

String query = "SELECT * FROM `login` WHERE `user_id` LIKE `userid` "; 
在這裏

,user_id是列,用戶ID是輸入變量和不爲空,

時調試,系統始終報告以下錯誤,

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'userid' in 'where clause' 

我可以打印userid作爲Allan,userid是字符串類型,當前值是「Allan」。爲什麼系統無法比較列和輸入變量?

非常感謝您提前!

迷迭香

+0

用戶ID輸入變量?你是什​​麼意思?你使用什麼編程語言? – duDE

回答

4

您需要將您的字符串值放在引號中,而不是滴答聲。通過將其放置在你告訴MySQL的蜱它是一個列標識符,而不是一個字符串值,像你想

String query = "SELECT * FROM `login` WHERE `user_id` LIKE 'userid' "; 
+0

非常感謝。我只是複製/粘貼你建議,但仍然錯誤 – user3837183

+0

QUERY:SELECT * FROM'login' WHERE'user_id' LIKE'userid' – user3837183

+0

java.sql.SQLException:對空結果集非法操作。 – user3837183

0

輸入變量,使用「」不``。我相信SQL將它們解釋爲系統的一部分,而不是引用。

0

John Conde的回答已經解決了這個錯誤,但我有一個小小的評論。

它看起來像你要選擇用戶的所有登錄信息與用戶代碼是相同的Java代碼中的userid變量。要做到這一點,你可以使用:然後

String userid = "Rosemary"; 
String query = "SELECT * FROM `login` WHERE `user_id` LIKE '" + userid + "' "; 

的實際查詢變爲:

SELECT * FROM `login` WHERE `user_id` LIKE 'Rosemary' 
+0

dennisschagt,非常感謝你!!!,我順道過去了。實際上,John的方式已經生成了與你一樣的SQL查詢,但在調試時仍然失敗,這很奇怪。同時感謝Prinsig的幫助,祝你有個愉快的一天! – user3837183