Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
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/01/2011, 09h37   #1
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
Par défaut ajout si existe pas en PDO

Bonjour,
J'ais opté pour cette méthode, pour controler "si existe" avant ajout.
Cependant cela me parait lourd, et je penses qu'il doit exister plus directe .Pouvez vous m'aider a simplifier cette méthode
Merci d'avance

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
$billet = "son_mail";
try
 {
 $bdd = new PDO('mysql:host=localhost;dbname=tabase', 'root', '');
 $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 }
  catch(Exception $e)
    {
	die('Erreur : '.$e->getMessage());
    }
$req = $bdd->prepare('SELECT * FROM user WHERE UserMail = ?');
 $req->execute(array($billet));
 if(!$donnees = $req->fetch())
 {
  //============c' est OK existe pas donc on crée================
$result = $bdd->prepare("INSERT INTO `user`
   ( `UserNom`,`UserMail`, `UserPas`)
    VALUES      (:UserN, :UserM,  :UserP)");
$result->execute(array(':UserN' => $UserNom, ':UserM' => $billet,':UserP' => $UserPas));
 }
 else
  {
  echo "Désolé ".$billet." existe déjas";
  }
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 10h23   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
faut définir ton champs en unique, ensuite tu récupères l'erreur
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 10h49   #3
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
Citation:
Envoyé par stealth35 Voir le message
faut définir ton champs en unique, ensuite tu récupères l'erreur
Merci de ta réponse, ça donnerait quoi comme code s'il te plait
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 11h03   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par mauriser Voir le message
Merci de ta réponse, ça donnerait quoi comme code s'il te plait
juste comme ca :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$result = $bdd->prepare("INSERT INTO `user` (`UserNom`, `UserMail`, `UserPas`) 
                         VALUES  (:UserN, :UserM,  :UserP)");
 
try 
{
    $result->execute(array(':UserN' => $UserNom, 
                           ':UserM' => $billet,
                           ':UserP' => $UserPas));
}
catch(PDOException $e)
{
    if($e->getCode() == 23000)
    {
        echo sprintf("Désolé %s existe déja", $billet);        
    }
    else
    {
    	exit($e->getMessage());
    }
}
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/01/2011, 11h36   #5
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
Whaou super merci c'est trés simple ..
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 11h41   #6
Membre Expert
 
Avatar de Doksuri
 
Tiger Scott
Développeur Web
Inscription : juin 2006
Messages : 1 245
Détails du profil
Informations personnelles :
Nom : Tiger Scott
Âge : 42

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2006
Messages : 1 245
Points : 1 502
Points : 1 502
Salut,

une idee comme ca (qui a du sens quand meme xD)

comme il existe la requete de type
Code sql :
1
2
3
CREATE TABLE IF NOT EXISTS `ta_table`;
oubien
DROP TABLE IF EXISTS `ta_table`;
peut-etre qu'il existe des requetes du type
Code sql :
INSERT INTO `ta_table` IF NOT EXISTS VALUES(...);
__________________
La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 11h45   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par mauriser Voir le message
Whaou super merci c'est trés simple ..

c'est dans l'optique que ton champs sois bien en index unique par contre, et faut pas forcement chercher a simplifié, ton code de base est tout a fait viable
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/01/2011, 12h09   #8
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
Citation:
Envoyé par stealth35 Voir le message
c'est dans l'optique que ton champs sois bien en index unique par contre, et faut pas forcement chercher a simplifié, ton code de base est tout a fait viable
Merci a toi, oui en fait je trouves les versions proposées guére plus simple coté code ...
christele_r est dé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 01h12.


 
 
 
 
Partenaires

Hébergement Web