Maison >développement back-end >tutoriel php >Comment créer en toute sécurité des requêtes LIKE dynamiques avec des instructions préparées MySQLi ?

Comment créer en toute sécurité des requêtes LIKE dynamiques avec des instructions préparées MySQLi ?

DDD
DDDoriginal
2024-12-05 21:30:12704parcourir

How to Securely Build Dynamic LIKE Queries with MySQLi Prepared Statements?

Utilisation d'instructions préparées avec des conditions LIKE dynamiques

Pour construire une requête SELECT avec un nombre dynamique de conditions LIKE à l'aide d'instructions préparées MySQLi, il est Il est essentiel d'entourer les signes de pourcentage (%) autour des paramètres, et non des espaces réservés.

Voici un guide étape par étape pour mettre en œuvre ceci en PHP :

  1. Extraire et préparer des expressions et des types de données :
    Séparez la saisie de l'utilisateur en termes de recherche individuels à l'aide d'exploser(). Initialisez les tableaux pour stocker les expressions de clause WHERE ($conditions) et la combinaison de types de données et de valeurs ($parameters).
$conditions = [];
$parameters = [''];
  1. Construire des expressions et des paramètres :
    Parcourez les termes de recherche, en créant une série d'expressions LIKE et en ajoutant les types de données correspondants à $parameters.
foreach ($search_exploded as $value) {
    $conditions[] = "name LIKE ?";
    $parameters[0] .= 's';
    $parameters[] = "%{$value}%";
}
  1. Préparer et exécuter la requête :
    Concaténer les $conditions dans la clause WHERE. Préparez l'instruction avec la requête, liez les paramètres $ à l'aide de l'opérateur splat (...) et exécutez-la.
$query = "SELECT * FROM info";
if ($conditions) {
    $stmt = $mysqli->prepare($query . ' WHERE ' . implode(' OR ', $conditions));
    $stmt->bind_param(...$parameters);
    $stmt->execute();
    $result = $stmt->get_result();
} else {
    $result = $conn->query($query);
}

En suivant ces étapes, vous pouvez exécuter efficacement des requêtes avec une dynamique nombre de conditions LIKE utilisant des instructions préparées par MySQLi, garantissant à la fois flexibilité et sécurité.

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!

Déclaration:
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