[英]SQL Syntax error, prepared statement, no details
我在應用程序中使用JDBC通過Java連接到數據庫,但是在發出查詢時,結果應該相同。
我正在嘗試驗證登錄名,但是遇到一些問題,這是我的錯誤:
您的SQL語法有誤; 檢查與您的MySQL服務器版本相對應的手冊,以在第1行的''附近使用正確的語法
如您所見,它並沒有真正告訴我任何事情。
對於那些使用PHP的人,我使用PDO進行了快速轉換
function conversion($connection, $username, $password) {
$statement = $connection->prepare("SELECT * FROM `forum_users` WHERE `username`=:name AND `password`= MD5(CONCAT(MD5(salt), MD5(:pass))");
$statement->bindParam(":name", $username);
$statement->bindParam(":pass", $password);
return $statement->execute();
}
這是Java中的代碼
Connection connection = null;
PreparedStatement statement = null;
ResultSet results = null;
try {
connection = getConnection();
statement = connection.prepareStatement(""
+ "SELECT * FROM `"+SQL_DB+"`.`forum_users`"
+ " WHERE `username`=?"
+ " AND `password`= MD5(CONCAT(MD5(salt), MD5(?))");
statement.setString(1, username);
statement.setString(2, password);
results = statement.executeQuery();
while(results.next()) {
System.out.println("Login success");
}
} catch(SQLException e) {
e.printStackTrace();
}
值得注意的是,salt是數據庫中的一列,我正在嘗試修改登錄名以使用單個查詢,而不是兩個不同的查詢。
錯別字:
" AND `password`= MD5(CONCAT(MD5(salt), MD5(?))")
1 2 3 3 4 42
請注意括號上的不匹配。 關閉#1的)
在哪里? 該錯誤消息是正確的,但是由於您的錯誤發生在查詢字符串的最后,因此沒有“后”文本顯示為錯誤上下文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.