IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

PDO select avant insert [PDO]


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut PDO select avant insert
    Bonjour,
    Je sais que sur cette affaire je suis une pomme
    Les habitués ici me diront tu va te faire Saboter

    Ca marche mais je n'ais pas trouvé mieux
    Avant d'inserrer dans ma base de donnée je contrôle si mon data existe pfff..
    Je suis certaine que vous m'écrivez cela en cinq lignes mais bon ...

    Aucune doc ne m'a donnée la solution !

    Voila donc le monstre (qui marche)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <?PHP
    try
    {
     $bdd = new PDO('mysql:host=localhost;dbname=mabase', 'root', '');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
    // Selecte un data existe--avant INSERT-----------------
     $reponse = $bdd->query("SELECT * FROM test WHERE pseudo='Cmoi'");
     $existe="";
    while ($donnees = $reponse->fetch())
    {
      if($donnees['pseudo']!="")  {  echo ("existe<br />");     $existe="O";  }
    }
    if ($existe!="O")
     {
     echo ("Creation OK<br />");
     $insert = $bdd->prepare('INSERT INTO test (pseudo, mdp) VALUES (?, ?)');
     $insert->execute(array('Cmoi', 'azerty'));
     }
    $reponse->closeCursor();
    ?>

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Cependant, j'ai vu (mai jamais testé) que le rowCount() peut etre défaillant pour certaines base :

    Si la dernière requête SQL exécutée par l'objet PDOStatement associé est une requête de type SELECT, quelques bases de données retourneront le nombre de lignes retournées par cette requête. Néanmoins, ce comportement n'est pas garanti pour toutes les bases de données et ne devrait pas être exécuté pour des applications portables.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    Cependant, j'ai vu (mai jamais testé) que le rowCount() peut etre défaillant pour certaines base :
    Oui tu as raison ça aurait été une meilleur piste, du reste je penses qu'avec notre PDO derniére mouture, sur un MySql récent ça devrait le faire...
    Bon sur du FireBird je ne parirais pas ! (parait que la version 3 sera impec)

  4. #4
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Non je parlais du rowCount() suite à un ancien message d'un modérateur qu'on a effacé depuis

    Sinon tu peux faire quelque chose comme ca :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    try
    {
     $bdd = new PDO('mysql:host=localhost;dbname=mabase', 'root', '');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
     
     $reponse = $bdd->query("SELECT count(*) as total FROM test WHERE pseudo='Cmoi'");
     
    if($reponse->fetch(PDO::FETCH_OBJ)->total == 0){
         // --- pas de compte
    }else{
        // --- compte trouvé
    }

  5. #5
    Invité
    Invité(e)
    Par défaut
    Mille mercis c'est parfait !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Select max id avant insertion (pb insertion parallèles)
    Par antoine.ginsburg dans le forum Persistance des données
    Réponses: 2
    Dernier message: 02/08/2011, 10h08
  2. Modification avant insertion
    Par KernelControl dans le forum Oracle
    Réponses: 2
    Dernier message: 21/12/2005, 13h54
  3. [MySQL] Vérification de doublons avant insertion
    Par Nicos77 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 09/12/2005, 13h37
  4. [MySQL] Vérification de la présence d'enregistrement avant insertion
    Par Odilon dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 28/09/2005, 15h30
  5. Problème d'utilisation select () avant recv sous windows
    Par init dans le forum Développement
    Réponses: 3
    Dernier message: 16/03/2005, 19h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo