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 ?
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);
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 + "%");
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);
Pour une correspondance globale, le joker doit être placé aux deux extrémités de la valeur :
pstmt.setString(1, "%" + notes + "%");
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!