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
Pour éviter ces erreurs, suivez les étapes suivantes :
$likeVar = "%" . $yourParam . "%";
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->bind_param("s", $likeVar);
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.
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");
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!