Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 26/06/2006, 11h20   #1
Inactif
 
Inscription : mai 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 5
Points : 0
Points : 0
Par défaut [SQL] récuperer la derniére valeur d'un champ autoincrément

je veux savoir comment je peux récuperer la derniére valeur d'un champs auto incrément pour l'utiliser dans une requéte d'insertion
belakhdarbts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 11h22   #2
Candidat au titre de Membre du Club
 
Inscription : juillet 2003
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 26
Points : 13
Points : 13
Envoyer un message via MSN à philippejuju
Bonjour,

regarde autour de getLastId
Citation:
$con->getLastID();
philippejuju est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 11h30   #3
Inactif
 
Inscription : mai 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 5
Points : 0
Points : 0
Par défaut belakhdarbts

ma requete d'isertion est la suivante ou je vais mettre $con->getLastID();
Code :
1
2
3
4
 
$sql = "INSERT INTO parle(ID_LANGUE)
		VALUES('$select3')"; 
	    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
belakhdarbts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 11h31   #4
Membre éclairé
 
Inscription : décembre 2004
Messages : 658
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 658
Points : 317
Points : 317
oula moi j'opterais pour une simple requete msql qui retourne la plus grande valeure du champs auto_increment

Vas plutot voir du coté SQL plutot que php
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 11h32   #5
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Tu auras toutes les infos que tu cherches ici :
http://php.net/mysql_insert_id
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 11h34   #6
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Citation:
Envoyé par zulot
oula moi j'opterais pour une simple requete msql qui retourne la plus grande valeure du champs auto_increment
Non pas du tout !
Il y a un gros risque de concurrence dans cette solution => deux utilisateurs risquent d'avoir le meme id si ils demandent en même temps.
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 11h37   #7
Membre éclairé
 
Inscription : décembre 2004
Messages : 658
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 658
Points : 317
Points : 317
Citation:
Envoyé par Mr N.
Non pas du tout !
Il y a un gros risque de concurrence dans cette solution => deux utilisateurs risquent d'avoir le meme id si ils demandent en même temps.

Dans la methode cité au dessus aussi.
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 11h43   #8
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par zulot
Dans la methode cité au dessus aussi.
Non parce que mysql_insert_id ne travaille que sur la connexion courante.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 11h45   #9
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Citation:
Envoyé par belakhdarbts
je veux savoir comment je peux récuperer la derniére valeur d'un champs auto incrément pour l'utiliser dans une requéte d'insertion
Bonjour de rien merci avec plaisir salut
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/06/2006, 11h48   #10
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Citation:
Envoyé par zulot
Dans la methode cité au dessus aussi.
Non.

Une table dont la "dernière" ligne est :
Deux utilisateurs A et B arrivent en même temps.
A fais un insert du "Tutu" et B fais un insert de "Titi"

La méthode bourrine qui consiste à faire en gros un select max(id) :
A => INSERT "Tutu" => 1235
B => INSERT "Titi" => 1236
B => SELECT MAX(id) => 1236
A => SELECT MAX(id) => 1236
/!\ Problème, A obtiens un id qui ne correspond pas à son insertion /!\

La méthode last insert id :
A => INSERT "Tutu" => 1235
B => INSERT "Titi" => 1236
B => last insert id => 1236
A => last insert id => 1235
Tout est bon, A a bien récupérer l'id correspondant à son insertion.
Tout ceci car last insert id est propre à la connexion.
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 12h23   #11
Inactif
 
Inscription : mai 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 5
Points : 0
Points : 0
Par défaut reponce

est ce que je peux écrire comme ça
Code :
1
2
3
4
 
	$sql = "INSERT INTO parle(ID_LANGUE,ID_CANDID)
		VALUES('$select3','$ID_CANDID')  WHERE ID_CANDID = ( SELECT LAST id from candidats)" ; 
	    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
belakhdarbts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 12h29   #12
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par belakhdarbts
est ce que je peux écrire comme ça
Code :
1
2
3
4
 
	$sql = "INSERT INTO parle(ID_LANGUE,ID_CANDID)
		VALUES('$select3','$ID_CANDID')  WHERE ID_CANDID = ( SELECT LAST id from candidats)" ; 
	    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
Si tu ne lis pas les réponses à tes questions, tu peux tout aussi bien arrêter d'en poser.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 13h32   #13
Inactif
 
Inscription : mai 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 5
Points : 0
Points : 0
Par défaut recuperer le derniere id

bonjour tous le monde voila mon code d'insertion
je veux inserer le derniere id candid de la table candidats dans la table parle
Code :
1
2
3
4
5
 
 
$sql = "INSERT INTO parle(ID_LANGUE,ID_CANDID)
		VALUES('$select3','$ID_CANDID') SELECT  SELECT LAST_INSERT_ID()   " ; 
	    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
mais ça ne marche pas il m'affiche
Notice: Undefined variable: ID_CANDID in c:\program files\easyphp1-8\www\call services site web\insertioncandidats.php on line 56
Erreur SQL !INSERT INTO parle(ID_LANGUE,ID_CANDID) VALUES('1','') SELECT SELECT LAST_INSERT_ID()
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT SELECT LAST_INSERT_ID()' at line 2
merci pour vos réponces
belakhdarbts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 13h35   #14
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
SELECT SELECT ? mmmhhh
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 13h37   #15
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
y'a ça qui traine dans la :

http://php.developpez.com/faq/?page=..._mysqlinsertid
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 13h37   #16
Membre émérite
 
Inscription : juillet 2005
Messages : 775
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2005
Messages : 775
Points : 858
Points : 858
Envoyer un message via AIM à ouatmad Envoyer un message via MSN à ouatmad Envoyer un message via Yahoo à ouatmad
si t veux recupérer et inserer le dernier id de l'autre table, utilise la fonction mysql_insert_id()(sais plus si l'orthographe est correcte)
__________________
Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789
ouatmad est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h38.


 
 
 
 
Partenaires

Hébergement Web