Comment utiliser les paramètres et l'instruction LIKE en SQL
En SQL, l'instruction LIKE vous permet d'effectuer une correspondance de modèles dans les chaînes. Cependant, son utilisation sans précautions appropriées peut conduire à des attaques par injection SQL. Pour empêcher de telles attaques, des requêtes paramétrées peuvent être utilisées.
Question originale
Dans le but de limiter les vulnérabilités d'injection SQL, la requête suivante a été construite à l'aide de paramètres :
SELECT * FROM compliance_corner WHERE (body LIKE '%@query%') OR (title LIKE '%@query%')
Cependant, l'exécution de cette requête dans un programme ne donne aucun résultat. Les paramètres peuvent-ils être utilisés de cette manière, ou sont-ils uniquement applicables dans des situations telles que les suivantes :
SELECT * FROM compliance_corner WHERE body LIKE '%<string>%'
Solution
Les paramètres peuvent être utilisés dans les instructions LIKE comme prévu . La syntaxe de la requête d'origine est incorrecte. Voici la bonne façon d'utiliser les paramètres dans ce scénario :
Dim cmd As New SqlCommand( "SELECT * FROM compliance_corner" _ + " WHERE (body LIKE @query )" _ + " OR (title LIKE @query)") cmd.Parameters.Add("@query", "%" & searchString & "%")
Cette requête correspondra correctement aux chaînes qui contiennent la chaîne de recherche dans les champs du corps ou du titre.
VB. Considérations NET
La solution fournie est syntaxiquement correcte pour VB.NET. Cependant, la mise en œuvre réelle peut varier en fonction du fournisseur de base de données spécifique et de la méthode de connexion utilisée. Reportez-vous à la documentation appropriée pour plus de conseils.
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!