Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/11/2010, 23h54   #1
Nouveau Membre du Club
 
Inscription : juin 2007
Messages : 167
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 167
Points : 29
Points : 29
Par défaut comment s'assurer que les deux requêtes ont été exécutées ensembles ?

salut,
Mes amis, j'ai deux requêtes : la première est un insert et la deuxième un update d'une autre table. Je voudrais que les deux requêtes s'exécutent l'une après l'autre, sans coupure, en bloc.
Comment puis-je le faire ?
J'utilise php comme langage de programmation.

merci
belaggoun2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 01h45   #2
Candidat au titre de Membre du Club
 
Inscription : octobre 2010
Messages : 31
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 31
Points : 12
Points : 12
il faudra utiliser les transactions
sgdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 06h57   #3
Nouveau Membre du Club
 
Inscription : juin 2007
Messages : 167
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 167
Points : 29
Points : 29
Bonjour
Vous avez raison, mon ami.
Mais le problème, c'est de savoir comment les implémenter dans un fichier php ?
Avez-vous un exemple ?

merci
belaggoun2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 12h45   #4
Candidat au titre de Membre du Club
 
Inscription : octobre 2010
Messages : 31
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 31
Points : 12
Points : 12
exemple d'implémentation pour une base de donnée innodb
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
// connect TO DATABASE
$dbh = mysqli_connect($host, $user, $pass, $db);
 
// turn off auto-commit
mysqli_autocommit($dbh, FALSE);
 
// run query 1
$result = mysqli_query($dbh, $query1);
IF ($result !== TRUE) {
    mysqli_rollback($dbh);  // IF error, roll back transaction
}
 
// run query 2
$result = mysqli_query($dbh, $query2);
IF ($result !== TRUE) {
    mysqli_rollback($dbh);  // IF error, roll back transaction
}
 
// AND so ON...
 
// assuming no errors, commit transaction
mysqli_commit($dbh);
 
// close connection
mysqli_close($dbh);
?>
sgdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 13h24   #5
Nouveau Membre du Club
 
Inscription : juin 2007
Messages : 167
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 167
Points : 29
Points : 29
Merci beaucoup, mon ami, pour votre réponse. Je vais tout de suite la tester !!
belaggoun2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 19h01   #6
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 450
Points : 6 450
Bonjour,

Au passage, si vos tables sont sous le moteur MyISAM, ça ne fonctionnera pas, puisque le moteur MyISAM n'est pas transactionnel.
Il faudra donc passer vos tables sous InnoDB.

ced
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h39.


 
 
 
 
Partenaires

Hébergement Web