par
devlop78 » 22 févr. 2011, 19:38
Oui, je te comprends, mais je reste contre ce nombre important de requête. Je ne sais pas ici ce que fait le script, mais en général il est suivi d'un insert.
Bref, ici on peut très bien récupérer pseudo et mail avec la requête que j'ai donnée. Je ne suis pas spécialiste en la matière et je trouve que l'exécution de requêtes SQL est rapide, toutefois, je pense que c'est assez gourmand. Il ne s'agit pas d'en être radin et de rendre le code immangeable, mais là, je pense qu'il est beaucoup moins couteux de faire cette requête, de récupérer le pseudo et le mail retourné, et de voir s'il correspond à ce que l'utilisateur a donné. En gros, c'est mieux pour SQL, c'est plus simple en PHP, c'est mieux pour tous.
Sinon, avec un insert, une méthode est de mettre les champs "nom", et "mail" en contrainte unique (ou index unique). On peut sans vérifier avec un select, insérer directement. Si le nom ou mail existe déjà, une erreur sortira, on peut la récupérer et l'analyser et afficher le message. On passe donc de 3 requêtes à 1. Le plus dur est l'analyse, j'ai moi-même fait cette requête en vérifiant un code SQL State, et c'est une erreur car ce code englobe trop d'erreurs. Mais avec un peu de recherche, je suis sûr que l'analyse de l'erreur de façon rapide et précise est possible. Mon message me retourne "violation de contrainte" (en gros), mais je suis certain qu'il est facile d'avoir un code plus précis (type de contrainte), et les champs concernés (ici, en l'occurence, si le pseudo et le mail sont en double, il risque de s'arrêter sur le premier, mais est-ce vraiment important).
Edit: aussi rajouter LIMIT 1 à la fin de la ou les requêtes pour que Mysql s'arrête de chercher dès qu'il en a trouvé un
Oui, je te comprends, mais je reste contre ce nombre important de requête. Je ne sais pas ici ce que fait le script, mais en général il est suivi d'un insert.
Bref, ici on peut très bien récupérer pseudo et mail avec la requête que j'ai donnée. Je ne suis pas spécialiste en la matière et je trouve que l'exécution de requêtes SQL est rapide, toutefois, je pense que c'est assez gourmand. Il ne s'agit pas d'en être radin et de rendre le code immangeable, mais là, je pense qu'il est beaucoup moins couteux de faire cette requête, de récupérer le pseudo et le mail retourné, et de voir s'il correspond à ce que l'utilisateur a donné. En gros, c'est mieux pour SQL, c'est plus simple en PHP, c'est mieux pour tous.
Sinon, avec un insert, une méthode est de mettre les champs "nom", et "mail" en contrainte unique (ou index unique). On peut sans vérifier avec un select, insérer directement. Si le nom ou mail existe déjà, une erreur sortira, on peut la récupérer et l'analyser et afficher le message. On passe donc de 3 requêtes à 1. Le plus dur est l'analyse, j'ai moi-même fait cette requête en vérifiant un code SQL State, et c'est une erreur car ce code englobe trop d'erreurs. Mais avec un peu de recherche, je suis sûr que l'analyse de l'erreur de façon rapide et précise est possible. Mon message me retourne "violation de contrainte" (en gros), mais je suis certain qu'il est facile d'avoir un code plus précis (type de contrainte), et les champs concernés (ici, en l'occurence, si le pseudo et le mail sont en double, il risque de s'arrêter sur le premier, mais est-ce vraiment important).
Edit: aussi rajouter LIMIT 1 à la fin de la ou les requêtes pour que Mysql s'arrête de chercher dès qu'il en a trouvé un