Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec 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 19/11/2010, 15h35   #1
Membre éprouvé
 
Inscription : août 2006
Messages : 586
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2006
Messages : 586
Points : 401
Points : 401
Par défaut récupération + insertion

Bonjour,

Je souhaite récupérer l'id d'un champ et, si la valeur cherchée n'existe pas dans la table, l'insérer puis récupérer son id... Peut-on faire tout cela en une seule requête, ou bien en faut-il 3 ?

Merci

Marc
[Hugo] est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 15h37   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 625
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 625
Points : 2 608
Points : 2 608
bonjour, cela dépendra de votre sgbd + version.
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 16h34   #3
Membre éprouvé
 
Inscription : août 2006
Messages : 586
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2006
Messages : 586
Points : 401
Points : 401
Bonjour, merci pour votre message ! J'utilise mysql, version 14.14, si j'en crois mysql --version.
[Hugo] est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 17h12   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 943
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 943
Points : 18 136
Points : 18 136
Envoyer un message via MSN à CinePhil
Sur le site de MySQL :
Citation:
MySQL Community Server(Current Generally Available Release: 5.1.53)
Citation:
Envoyé par [Hugo
]mysql, version 14.14, si j'en crois mysql --version.
Tu viens du futur ?

Il faudrait expliquer plus concrètement ton besoin avec une description des tables pour qu'on puisse t'aider.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 17h52   #5
Membre éprouvé
 
Inscription : août 2006
Messages : 586
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2006
Messages : 586
Points : 401
Points : 401
Lol, non, j'ai recopié le mauvais chiffre - mais il y a bien un 14.14 qq part dans mysql --version.

Plus en détail, j'ai un table keywords structurée très simplement :

id | keywords

Et je veux récupérer l'id d'un keywords donné, ou - s'il n'existe pas - l'insérer et récupérer son id. Faut-il d'autres détails ?

Merci beaucoup (du présent )
[Hugo] est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 23h34   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 943
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 943
Points : 18 136
Points : 18 136
Envoyer un message via MSN à CinePhil
Je pense qu'il va te falloir au moins deux requêtes.
1) SELECT pour chercher l'ID correpondant à un keyword
2) Si pas de résultat alors un INSERT pour insérer le nouveau mot
3) Récupération de l'ID inséré avec mysql_insert_id

Quel est ton langage de programmation ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2010, 19h01   #7
Membre éprouvé
 
Inscription : août 2006
Messages : 586
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2006
Messages : 586
Points : 401
Points : 401
Bonjour Cinéphil,

Merci pour ta réponse ! Je code en php (5, pas 14 )
[Hugo] est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2010, 19h11   #8
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 277
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 277
Points : 2 323
Points : 2 323
On veut du code !
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2010, 21h13   #9
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Tu peux faire ce genre de chose avec un seul appel a une procédure stockée préalablement crée
becket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 16h58   #10
Membre éprouvé
 
Inscription : août 2006
Messages : 586
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2006
Messages : 586
Points : 401
Points : 401
Bonjour,

Alors, voici un peu de code :

Code :
1
2
3
4
5
6
7
8
9
10
 
private getReviewId($bdd)
{
$req = $bdd->prepare('SELECT id FROM review WHERE title = ?');
$req->execute(array($this->review));
IF($donnees=$req->fetch()) RETURN $donnees['id'];
$req=$bdd->prepare('INSERT INTO review(title) VALUES(:title)');
$req->execute(array($this->review));
//et récupérer l'id et le retourner
}
Est-ce qu'il y aurait moyen de faire plus rapide ?

Merci à tous pour vos réponses !!

Marc
[Hugo] 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 18h39.


 
 
 
 
Partenaires

Hébergement Web