Instructions préparées PDO avec prise en charge des caractères génériques
Les instructions préparées offrent une sécurité et des performances améliorées pour les requêtes de base de données en empêchant les attaques par injection SQL. Cependant, l'utilisation de caractères génériques avec des instructions préparées peut poser des problèmes.
Dans votre cas, vous essayiez d'exécuter une requête telle que :
<code class="sql">SELECT * FROM `gc_users` WHERE `name` LIKE '%anyname%'</code>
Vous avez tenté de lier le paramètre avec '%:name %' et ':name', mais les deux ont échoué. Voici comment utiliser des caractères génériques avec des instructions préparées :
Utilisation de bindValue :
Vous pouvez utiliser bindValue pour lier correctement les paramètres génériques :
<code class="php">$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name"); $stmt->bindValue(':name', '%' . $name . '%'); $stmt->execute();</code>
Utilisation de bindParam (Modifié) :
De plus, vous pouvez également utiliser bindParam avec une légère modification :
<code class="php">$name = "%$name%"; $query = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` like :name"); $query->bindParam(':name', $name); $query->execute();</code>
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!