Récupération de plusieurs enregistrements à partir de requêtes MySQLi LIKE
Les requêtesMySQLi LIKE
peuvent donner plusieurs résultats. Cependant, la méthode standard fetch()
ne récupère que la première ligne. Ce guide présente plusieurs façons de récupérer tous les enregistrements correspondants.
Méthode 1 : get_result()
et fetch_all()
C'est la méthode préférée. get_result()
récupère l'intégralité du jeu de résultats et fetch_all()
le convertit efficacement en un tableau associatif :
$param = "%{$_POST['user']}%"; $stmt = $db->prepare("SELECT id, username FROM users WHERE username LIKE ?"); $stmt->bind_param("s", $param); $stmt->execute(); $result = $stmt->get_result(); $data = $result->fetch_all(MYSQLI_ASSOC);
Méthode 2 : déclarations préparées avec fetch()
et boucle
Cette approche utilise des instructions préparées avec bind_result()
et itère en utilisant fetch()
jusqu'à ce qu'il n'y ait plus de lignes disponibles :
$param = "%{$_POST['user']}%"; $stmt = $db->prepare("SELECT id, username FROM users WHERE username LIKE ?"); $stmt->bind_param("s", $param); $stmt->execute(); $stmt->bind_result($id, $username); while ($stmt->fetch()) { // Process each row ($id, $username) }
Méthode 3 : execute_query()
(PHP 8.2 et versions ultérieures)
Pour PHP 8.2 et supérieur, execute_query()
propose une alternative concise :
$sql = "SELECT id, username FROM users WHERE username LIKE ?"; $result = $db->execute_query($sql, ["%{$_POST['user']}%"]); $data = $result->fetch_all(MYSQLI_ASSOC);
Ressources utiles :
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!