[PEAR][DB] Pourquoi lance-t-il des EXPLAIN ?
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 :
Code:
SELECT count(*) as quantite FROM sp_coach WHERE lib_coach='COACH1'
Je l'execute simplement avec un
Code:
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
}
} |
Pourtant quand je regarde les logs des requetes qui sont executer j'en vois deux et non une :
Code:
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 |
Voici le cde qui précède ma requête :
Code:
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'); |
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 !