Maison > base de données > tutoriel mysql > Comment les instructions préparées peuvent-elles améliorer l'efficacité et la sécurité des recherches LIKE ?

Comment les instructions préparées peuvent-elles améliorer l'efficacité et la sécurité des recherches LIKE ?

Susan Sarandon
Libérer: 2025-01-16 10:57:58
original
285 Les gens l'ont consulté

How Can Prepared Statements Improve the Efficiency and Security of LIKE Searches?

Optimisation LIKE des recherches avec des déclarations préparées

Les requêtes de base de données utilisant l'opérateur LIKE pour la correspondance de modèles nécessitent un traitement minutieux pour éviter les vulnérabilités et garantir les performances. Une mauvaise utilisation peut entraîner des erreurs.

Examinons quelques approches erronées :

<code class="language-sql">$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{?}%\' ';</code>
Copier après la connexion

Cela échoue car le nombre de variables dans la chaîne SQL ne correspond pas aux paramètres fournis à bind_param().

<code class="language-sql">$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% ';</code>
Copier après la connexion

Cela entraîne une erreur de syntaxe en raison du placement incorrect des caractères génériques (%{}) dans la chaîne de requête.

La méthode correcte utilise des instructions préparées, en utilisant un espace réservé au point d'interrogation et en liant la variable de manière appropriée :

<code class="language-php">$likeVar = "%" . $yourParam . "%";
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->bind_param("s", $likeVar);
$stmt->execute();</code>
Copier après la connexion

Ce code :

  1. Construit le modèle en concaténant les signes de pourcentage à l'entrée de l'utilisateur ($yourParam).
  2. Prépare la requête avec un espace réservé ?.
  3. Lie la chaîne de modèle ("s" pour chaîne) à l'aide de bind_param().
  4. Exécute la déclaration préparée.

L'utilisation d'instructions préparées avec LIKE empêche l'injection SQL et améliore l'efficacité des requêtes.

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