Maison > développement back-end > tutoriel php > Comment concaténer correctement des variables avec des instructions préparées en SQL ?

Comment concaténer correctement des variables avec des instructions préparées en SQL ?

Linda Hamilton
Libérer: 2024-12-16 02:50:11
original
462 Les gens l'ont consulté

How to Properly Concatenate Variables with Prepared Statements in SQL?

Concaténation de variables avec des instructions préparées

Lors de l'utilisation d'instructions préparées, il est essentiel de concaténer correctement les variables avec la requête SQL. Une syntaxe incorrecte peut entraîner des erreurs, telles que celles rencontrées dans les fragments de code suivants :

$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{$var}%' '; // Error: Number of variables doesn't match number of parameters
$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% '; // Error: Wrong SQL
Copier après la connexion

L'approche correcte

Pour éviter ces erreurs, suivez les étapes suivantes :

  1. Concaténez votre paramètre avec des caractères génériques en dehors du préparé déclaration :
$likeVar = "%" . $yourParam . "%";
Copier après la connexion
  1. Préparez la requête en utilisant ? comme espace réservé :
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?");
Copier après la connexion
  1. Liez le paramètre à l'instruction préparée :
$stmt->bind_param("s", $likeVar);
Copier après la connexion

Dans cet exemple, $likeVar contient la valeur à recherché avec des caractères génériques ("%...%"). Le lier au type de paramètre s (string) garantit qu'il est correctement géré dans la requête de base de données.

Insensibilité à la casse

Si vous avez besoin d'une recherche insensible à la casse, vous pouvez ajouter la clause COLLATE utf8mb4_bin à votre requête :

$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ? COLLATE utf8mb4_bin");
Copier après la connexion

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