Erreur de syntaxe MySQL : "Vous avez une erreur dans votre syntaxe SQL" lors de l'exécution de PreparedStatement
Lors de l'exécution d'une requête à l'aide d'un PreparedStatement, les utilisateurs peut rencontrer une erreur "MySQLSyntaxErrorException proche de "?"". Cette erreur signifie une erreur de syntaxe dans la requête SQL.
Dans ce problème spécifique, le code tente de remplacer les paramètres de requête à l'aide du '?`占位符, mais PreparedStatement ne remplace pas correctement ces espaces réservés.
Le problème réside dans l’appel à la méthodeexecuteQuery(). Le code écrase la requête préparée par la requête d'origine en appelant s.executeQuery(query) au lieu de s.executeQuery(). La méthode executeQuery() sans argument doit être utilisée pour exécuter la requête préparée.
PreparedStatement s = conn.prepareStatement(query); s.setInt(1, intValue); s.setString(2, strValue); rs = s.executeQuery(); // Correct
De plus, le code peut perdre des ressources en raison de connexions, d'instructions et d'ensembles de résultats non fermés. Les ressources doivent être fermées dans un bloc final pour éviter l'épuisement des ressources.
try { ... } finally { if (rs != null) rs.close(); if (s != null) s.close(); if (conn != null) conn.close(); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!