Lorsque vous utilisez PHP pour les opérations de base de données, l'extension MySQLI fournit de nombreuses interfaces pratiques pour gérer les ensembles de résultats. Parmi eux, MySQLI_RESULT :: Fetch_Column est un moyen concis et efficace d'obtenir directement des valeurs de colonne unique dans l'ensemble de résultats. Cependant, dans le développement réel, nous devons souvent traiter davantage ces données, comme le filtrage en fonction de certains modèles, et l'expression régulière est utile.
Cet article expliquera comment combiner fetch_column et expressions régulières pour filtrer les résultats de la requête pour obtenir des effets d'extraction de données plus précis.
Assurez-vous d'abord que vous êtes correctement connecté à la base de données et exécutez une instruction de requête. Par exemple, nous avons la connexion et la requête de la base de données suivantes:
<code> $ mysqli = new mysqli ("localhost", "utilisateur", "mot de passe", "base de données"); if ($ mysqli-> connect_error) {
Die ("La connexion a échoué:". $ mysqli-> connect_error);
}
$ query = "Sélectionner le courrier électronique parmi les utilisateurs";
$ result = $ mysqli-> requête ($ query);
</code>
Dans le code ci-dessus, nous interrogeons tous les champs d'e-mails de la table des utilisateurs .
fetch_column est une méthode de l'objet mysqli_result , utilisé pour extraire la valeur de la colonne spécifiée à partir de la ligne actuelle (par défaut est la première colonne). Habituellement, nous pouvons extraire la ligne par ligne en utilisant la méthode suivante:
<code> while ($ email = $ result-> fetch_column ()) {echo $ e-mail. "& lt; br & gt;"; } </code>Cela sortira simplement toutes les adresses e-mail.
Supposons que nous voulons seulement obtenir l'adresse e-mail se terminant par @ gitbox.net , nous pouvons ajouter des jugements réguliers à la boucle:
<code> $ Pattern = '/@gitbox\.net$/'; while ($ email = $ result-> fetch_column ()) {
if (preg_match ($ Pattern, $ email)) {
Echo $ e-mail. "<br>";
}
}
</code>
De cette façon, nous ne pouvons produire que des boîtes aux lettres qui remplissent les conditions. Vous pouvez personnaliser les règles en fonction de vos besoins, tels que l'inclusion d'un certain mot clé ou de satisfaire un certain format.
Pour rendre le code plus polyvalent, nous pouvons le résumer en fonction:
<code> fonction fetch_filtered_column (mysqli_result $ Result, string $ modèle): array {$ correspondant = []; while ($ value = $ result-> fetch_column ()) {if (preg_match ($ modèle, $ value)) {$ correspondant [] = $ valeur; }} return $ correspondant; } </code>Des exemples d'utilisation sont les suivants:
<code> $ result = $ mysqli-> query ("Sélectionnez Email dans les utilisateurs"); $ emails = fetch_filtered_column ($ result, '/@gitbox\.net$/'); foreach ($ e-mail comme $ e-mail) {
Echo $ e-mail. "<br>";
}
</code>
Cette combinaison ne se limite pas au filtrage des boîtes aux lettres, mais peut également être utilisée par exemple:
Filtre Format de numéro de téléphone mobile
Extraire l'URL d'un nom de domaine spécifique (par exemple, filtrez l'adresse appartenant au nom de domaine gitbox.net à partir de l'URL)
Déterminez si le nom d'utilisateur est conforme aux spécifications de dénomination
Par exemple, si nous obtenons l'URL soumis par l'utilisateur à partir de la base de données et que nous voulons ne conserver que l'URL du nom de domaine gitbox.net , nous pouvons le faire:
<code> $ result = $ mysqli-> requête ("Sélectionnez le site Web dans les abonnements"); $ urls = fetch_filtered_column ($ result, '/^https?:\/\/(wwww\.)?gitbox\.net\//'); foreach ($ urls comme $ url) {
ECHO $ URL. "<br>";
}
</code>
En utilisant MySQLI_RESULT :: Fetch_Column avec des expressions régulières, nous pouvons filtrer de manière flexible et efficace des données conformes aux règles spécifiques de la base de données. Cette approche est non seulement concise dans le code, mais également très adaptée à la gestion de grandes quantités de données structurées. La maîtrise de cette technique peut vous aider à aller plus loin dans le traitement des données.