Contrôler d'une requête MySQL

Pix
Eléphanteau du PHP | 16 Messages

05 avr. 2005, 09:47

Bonjour à tous,

Il arrive parfois que des requêtes ne soient pas entièrement exécutées: ce qui est génant quand on remplit les champs d'une table par exemple.

Est-ce que quelqu'un sait comment on fait pour contrôler si une requête a bien été effectuée?

Merci

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

05 avr. 2005, 10:08

Si tu fais un ajout de données (INSERT), tu peux vérifier sa bonne exécution en lançant un simple SELECT count(*). :wink:

Tchüss !

Pix
Eléphanteau du PHP | 16 Messages

05 avr. 2005, 10:26

bingo!?

En fait c'est tout simple. Qui l'eut cru!

Si on a par exemple:
$maj=mysql_query("UPDATE matable SET champ1 = '" . $champ1 . "' WHERE SID ='" . $SID . "'");
il suffit d'insérer la condition suivante:
if (!mysql_query($maj)) {
echo "Erreur"; // ou autre commande
}
Normalement ça doit fonctionner.
Non?

@+

Eléphanteau du PHP | 32 Messages

05 avr. 2005, 10:36

Je sais pas trop comment te guider car j'ai jamais eu de requette renvoyée à moitié , et je ne vois pas bien ce qu'insinue Albat .

Par contre , ton truc est faux , ça c'est une certitude :wink:

Pix
Eléphanteau du PHP | 16 Messages

05 avr. 2005, 10:42

:oops:

Voici la correction:
$maj="UPDATE matable SET champ1 = '" . $champ1 . "' WHERE SID ='" . $SID . "'";

if (!mysql_query($maj)) { 
echo "Erreur"; // ou autre commande 
}
else {
echo "c'est bon"; // ou autre commande 
}
J'ai testé et à priori ça fonctionne

Merci à tous pour votre aide

Tschüss :wink:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

05 avr. 2005, 11:54

je ne vois pas bien ce qu'insinue Albat.
J'insinue pas, j'éclaire. :wink:

L'idée était pourtant bien simple.
- si tu as une table contenant n enregistrements,
- si tu insères x nouveaux enregistrements dans cette table,
- si après cette opération, la table contient n+x enregistrements,
= alors c'est que ça a marché. :wink:

Pix
Eléphanteau du PHP | 16 Messages

05 avr. 2005, 11:59

Albat je trouve aussi que ta solution est simple et elle fonctionne très bien .
En fait ce que je cherchais à faire c'était un contôle qui puisse fonctionner dans tous les cas de figure.

bye bye
"Tout penseur avare de ses pensées est un penseur de Radin" (Pierre Dac)

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

05 avr. 2005, 12:05

Tu peux aussi utiliser mysql_affected_rows() pour savoir quels enregistrements ont été réellement modifiées. Si tu fais un UPDATE avec un SID qui n'existe pas, la requête va s'exécuter sans erreur et mysql_query() ne sera pas FALSE. En revanche, mysql_affected_rows() te renverra 0 car c'est le nombre d'enregistrements modifiés. À noter que cette fonction renverra également 0 si le champs avait déjà la valeur que l'on essaie de lui attribuer.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

05 avr. 2005, 12:07

Ma solution est élémentaire, mais je le reconnais volontiers pas terriblement élégante et loin d'être universelle.
Je préfère la tienne qui est tout aussi simple et bien plus astucieuse.
(m'en veux de pas y avoir pensé moi-même !) :evil:

Ça prend un 's' après le T, "TschüB" ? Ah oui, peut-être...

Pix
Eléphanteau du PHP | 16 Messages

05 avr. 2005, 12:18

Merci Albat
Euh .... tschüss s'écrit bien comme ça :)
"Tout penseur avare de ses pensées est un penseur de Radin" (Pierre Dac)