簡體   English   中英

SQL語法錯誤,准備好的語句,沒有詳細信息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM