Je sais que vous pouvez utiliser PHP Email Valider des filtres pour vérifier si les données sont Y a-t-il de toute façon que je puisse exécuter une requête MySQL pour le faire, vérifier uniquement ce format de style. Sinon, je devrai faire une pagination et charger un script de limite équilibré pour sélectionner tous les enregistrements à partir de la DB (50 000+) et le serveur est déjà lent pour mon client sur l'hébergement partagé. P>
Je veux juste voir une liste des e-mails valides et je peux également vérifier les doublons ou les similitudes avec Appréciez toute collaboration à ce sujet. P> ABC @ ABC. ext code> p>
comme code> requête? p>
5 Réponses :
Vous pouvez utiliser quelque chose comme celui-ci
SELECT * FROM your_table WHERE email_col LIKE '%@%.%'
Plus un pour l'effort, j'ai utilisé cela comme compilateur de requête supplémentaire pour ce qui précède.
Oui parce que j'ai utilisé cela pour une validation rapide et des déménagements en plus de ce qui précède. Je pense que je vais faire une page PHP aussi juste pour être sûr que je reçois des courriels propres et avec les nouveaux formulaires d'inscription. Ce serait la meilleure approche.
Quelque chose comme ça ou p> mise à jour.
C'est juste un exemple, comment utiliser une expression régulière dans MySQL. P> P>
Est-ce que cela supprimera www.site.john@site.com ou www.hayley.smith@www.mail.com - certains courriels étranges! même eu des vides; Numéros mobiles, mots de passe sans MD5 et tant de choses que vous pouvez imaginer dans le champ email!
Oui Bonne idée Utilisation de MySQL Regex :) B> Voir ce tutoriel http://www.mysqlTutorial.org/mysql-regular-expression-regexp .aspx code>
C'est juste un exemple de rééglementation dans MySQL.Vous pouvez écrire votre propre regexp :)
@TheBlackBenzKid: Ce sont des adresses e-mail admissibles, je ne vois pas votre problème avec eux.
... et des quads en pointillés et des domaines avec plus de 2 parties et le reste des caractères autorisés dans un nom de boîte aux lettres ... IIRC MySQL utilise un analyseur POSIX - pour PCRE, j'utilise '^ [A-Z0-9 \ ._% +! $ & * = ^ | ~ #% \ '`? {} / \ -] + @ [A-Z0-9 \ .-] + \. [AZ] {2,6} $ $ {2,6} $ "
Ça n'existe pas. Je ne trouve pas la référence ici pour le sarcasme. Mais happelé votre commentaire, peu importe. @ Col.shrapnel
@TheBlackBenzKid: Non? Comment reviendra-t-il la vie en 2000? Le domaine .museum code> a été introduit en 2001, ainsi que
.Travel code>: EN.Wikipedia.org/wiki/.Museum d'où je suppose, c'est dix ans i>.
Utilisez celui-ci, il vérifiera où devrait être un "@" et "". dans l'email. Ceci est testé un. p>
Sélectionnez * à partir de école code> où
e-mail code> pas regener
'^ [A-ZA-Z0-9] [A-ZA-Z0-9. -] * [A-ZA-Z0-9. EM> -] @ [A-ZA-Z0-9 ] [A-ZA-Z0-9 ._-] * [A-ZA-Z0-9] \. [A-ZA-Z] {2,4} $ ''; P>
N'utilisez pas cela. Trop de faux positifs utilisant cette regex. Des courriels comme foo-foo123@foomail.com sont attrapés et c'est une adresse email valide.
Exécutez ce SQL pour créer un déclencheur à l'intérieur de la base de données MySQL, cela empêchera d'insérer un courrier électronique formaté à tort:
CREATE DEFINER=`root`@`localhost` TRIGGER `users_before_insert` BEFORE INSERT ON `users` FOR EACH ROW BEGIN IF (NEW.`email` REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$')=0 THEN SIGNAL SQLSTATE VALUE '45000' SET MESSAGE_TEXT = '[table:users] - `email` incorrect format!'; END IF; END
Comme d'autres personnes ont mentionné, vous pouvez utiliser une regex pour valider les courriels, mais avec une précision limitée.
-- you could, but not recommended SELECT * FROM users WHERE email NOT REGEXP '^[^@]+@[^@]+\.[^@]{2,}$';
C'est pourquoi nous validons les données avant qu'il ne passe dans la DB = \
Mon client vient de recevoir une protection XSS et un filtre_validate_email de moi-même. Juste à la recherche d'une solution. Je suis au courant de ça merci!
Pourquoi avez-vous besoin de pagination pour cette opération ponctuelle? Je ne comprends pas tes raisons
@ Col.shrapnel hi; Je pensais que la chargement de 50 000 champs dans le navigateur apportera une grande fenêtre et écrase le serveur et le rend lentement. Alors la pagination réduirait que l'utilisation de la limite ...
Quel est le point dans le chargement de 50 000 champs dans le navigateur ?! Qu'est-ce que tu vas faire avec tous?
Vous ne vous êtes pas compté. C'est pourquoi je veux faire cela avec MySQL. J'ai dit pagination et faire une page en dernier recours que je pourrais utiliser si sinon filtres et filtre_validate_email filtres dans le PHP tandis que la boucle. MySQL serait mieux pour moi, car je peux exporter les données au format CSV ou XML ... etc.