LIKE
des recherches avec des déclarations préparéesLes 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>
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>
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>
Ce code :
$yourParam
).?
.bind_param()
.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!