Bonjour,
Je veux prévenir l'existence de doublons. J'ai bien pensé à insérer et analyser le code de retour, mais mon application doit tourné sur plusieurs systèmes de bases de données. J'utilise donc la classe DB de PEAR.
Je regarde si il existe déjà un coach de son nom dans ma base.
La requête standard est donc :
Je l'execute simplement avec un
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT count(*) as quantite FROM sp_coach WHERE lib_coach='COACH1'
Pourtant quand je regarde les logs des requetes qui sont executer j'en vois deux et non une :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $lo_result=$go_db->Query('SELECT count(*) as quantite FROM sp_coach WHERE lib_coach=?',$ls_coach); if (DB::isError($lo_result)) { die($lo_result->getUserInfo()); } else { $lo_ligne = $lo_result->fetchRow(); if (!empty($lo_ligne->quantite)){ //DOUBLON } }
Voici le cde qui précède ma requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 1942 Init DB smileypaintball 1942 Query EXPLAIN SELECT count(*) as quantite FROM sp_coach WHERE lib_coach='COACH1' 1942 Query SELECT count(*) as quantite FROM sp_coach WHERE lib_coach='COACH1' 1942 Quit
D'où viens donc cette demande d'EXPLAIN et à quoi sert-elle ? (Je connais la signification d'EXPLAIN. Je demande pourquoi PEAR lance cette requête en plus et si il est possible de l'éviter. Car dans ce cas c'est clairement inutile !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 require_once 'DB.php'; $go_db =& DB::connect('mysql://root:localhostmvtmjsunp@localhost/smileypaintball'); if (DB::isError($go_db)){ die($go_db->getMessage()); } $go_db->setFetchMode(DB_FETCHMODE_OBJECT); $go_db->setOption('seqname_format','sequence_%s');
Partager