Maison >base de données >tutoriel mysql >PreparedStatement `executeQuery()` : pourquoi l'utiliser sans paramètre de chaîne SQL ?
Erreur de syntaxe de PreparedStatement : une plongée plus approfondie
Vous avez rencontré un message d'erreur lié à PreparedStatements. L'examen de votre code, en particulier de la requête selectSql1 et de la méthode select1, révèle un problème subtil.
Le problème réside dans l'utilisation de la méthodeexecuteQuery de PreparedStatement. Votre méthode select1 tente actuellement d'appeler :
return this.stmt.executeQuery(sql);
où sql est la requête SQL elle-même. Ce n'est pas la bonne façon d'utiliser une méthodeexecuteQuery sur un PreparedStatement.
Solution
Le correctif consiste simplement à mettre à jour cette ligne vers :
return this.stmt.executeQuery();
En supprimant le paramètre sql de la méthodeexecuteQuery, vous vous assurez que la requête interne du PreparedStatement est exécutée à la place de la chaîne SQL brute. PreparedStatements fournit des paramètres d'espace réservé désignés par des points d'interrogation (?) dans la requête SQL, qui sont ensuite liés à des valeurs spécifiques telles que randNum.
Par conséquent, l'appel d'exécution correct dans ce contexte est sans aucun paramètre, permettant à PreparedStatement de exécuter sa requête interne, qui a déjà été liée aux valeurs des paramètres.
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!