Maison > base de données > tutoriel mysql > Comment puis-je utiliser en toute sécurité des caractères génériques avec des instructions préparées dans SQL pour une recherche efficace ?

Comment puis-je utiliser en toute sécurité des caractères génériques avec des instructions préparées dans SQL pour une recherche efficace ?

Linda Hamilton
Libérer: 2024-12-19 18:52:17
original
1001 Les gens l'ont consulté

How Can I Safely Use Wildcards with Prepared Statements in SQL for Efficient Searching?

Utilisation de caractères génériques dans les instructions préparées pour la fonctionnalité de recherche

Lors de la mise en œuvre d'une fonctionnalité de recherche utilisant un mot-clé comme paramètre de recherche, il devient nécessaire d'utiliser le mot-clé LIKE en SQL. Cependant, intégrer LIKE avec des instructions préparées peut être un peu délicat.

Dans l'exemple fourni :

PreparedStatement pstmt = con.prepareStatement(
      "SELECT * FROM analysis WHERE notes like ?");
pstmt.setString(1, notes);
Copier après la connexion

L'espace réservé (?) dans la chaîne SQL représente le paramètre qui sera défini avec le mot-clé LIKE. Dans ce cas, le mot-clé% doit être ajouté à la valeur attribuée au paramètre d'espace réservé.

Solution :

Pour utiliser LIKE avec préparé Dans les instructions, le caractère générique (« % ») doit être défini directement dans la valeur elle-même, et non dans la chaîne SQL. Cela peut être fait en ajoutant le caractère générique à la valeur lors de la définition du paramètre :

pstmt.setString(1, notes + "%");
Copier après la connexion

Si une correspondance de préfixe est requise, le caractère générique doit être placé au début de la valeur :

pstmt.setString(1, "%" + notes);
Copier après la connexion

Pour une correspondance globale, le joker doit être placé aux deux extrémités de la valeur :

pstmt.setString(1, "%" + notes + "%");
Copier après la connexion

Il est important de noter que les caractères spéciaux dans le les valeurs, telles que %, _, [ et !, doivent être échappées pour éviter les conflits avec leur utilisation comme caractères génériques dans la clause LIKE. L'exemple fourni dans la réponse résout de manière adéquate ce problème en remplaçant ces caractères par des séquences d'échappement avant de définir le paramètre.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal