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 :

Requete insert et update ne marche pas [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Avatar de sourcilpower
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2011
    Messages : 128
    Points : 124
    Points
    124
    Billets dans le blog
    2
    Par défaut Requete insert et update ne marche pas
    Bonjour

    J'ai un souci ma requete insert ou update ne marche pas. Aucun message d'erreur. mais mes requete select 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
    26
    function conn_pdo(){
      try{
          $pdo = new PDO('mysql:host='._HOST_.';dbname='._DATABASE_, _USER_, _PASSWORD_);
          $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
          return $pdo;
      }
      catch(Exception $e){
          echo 'Erreur : '.$e->getMessage().'<br />';
          echo 'N° : '.$e->getCode();
          exit();
      }
    }
    if (isset($_GET['cam']) && isset($_GET['lat']) && isset($_GET['lng'])){
      $conn = conn_pdo();
      try{
        $conn->beginTransaction();
        $count = $conn->exec("INSERT INTO cam (cam_id,cam_lat,cam_lng) 
                              VALUES ('{$_GET['cam']}','{$_GET['lat']}','{$_GET['lng']}') 
                              ON DUPLICATE KEY UPDATE cam_lat='{$_GET['lat']}',cam_lng='{$_GET['lng']}'");
      }
      catch (Exception $e){
        $conn->rollBack();
        echo 'Erreur : '.$e->getMessage().'<br />';
        echo 'N° : '.$e->getCode();
      }
    }
    N'oublie pas le pouce vert

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu n'as pas d'erreur PDO, c'est que tu ne rentres pas dans ta condition if{}.
    Tout de même, il faut utiliser une requête préparée : on ne place pas des données étrangères dans une requête brutalement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Avatar de sourcilpower
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2011
    Messages : 128
    Points : 124
    Points
    124
    Billets dans le blog
    2
    Par défaut
    Merci de ta réponse

    J'ai vérifie je rentre bien dans mon if et j'ai également fait la requête en préparer mais rien non plus
    N'oublie pas le pouce vert

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Contrôle la valeur de rowcount() après l'insertion pour voir.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier
    Avatar de sourcilpower
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2011
    Messages : 128
    Points : 124
    Points
    124
    Billets dans le blog
    2
    Par défaut
    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
    26
    27
    28
    29
    30
     
    if (isset($_GET['cam']) && isset($_GET['lat']) && isset($_GET['lng']))
    {
      $conn = conn_pdo();
      try
      {
        $conn->beginTransaction();
        echo "INSERT INTO cam (cam_id,cam_lat,cam_lng) 
              VALUES ('{$_GET['cam']}','{$_GET['lat']}','{$_GET['lng']}') 
              ON DUPLICATE KEY UPDATE cam_lat='{$_GET['lat']}',cam_lng='{$_GET['lng']}'";
     
     
     
        $stmt = $conn->prepare("INSERT INTO cam (cam_id,cam_lat,cam_lng) 
              VALUES (:valcam,:vallat,:vallng) 
              ON DUPLICATE KEY UPDATE cam_lat=:vallat,cam_lng=:vallng");
        $stmt->bindParam(':valcam', $_GET['cam']);
        $stmt->bindParam(':vallat', $_GET['lat']);
        $stmt->bindParam(':vallng', $_GET['lng']);
        $stmt->execute();
        echo $stmt->rowcount();
     
      }
      catch (Exception $e)
      {
        $conn->rollBack();
        echo 'Erreur : '.$e->getMessage().'<br />';
        echo 'N° : '.$e->getCode();
      }
    }
    J'ai bien mon echo de la requete qui s'affiche et le rowcount() qui me dit '1'
    N'oublie pas le pouce vert

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ta préparation n'est pas bonne : tu ne peux pas avoir plusieurs fois le même paramètre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre régulier
    Avatar de sourcilpower
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2011
    Messages : 128
    Points : 124
    Points
    124
    Billets dans le blog
    2
    Par défaut
    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
    26
    27
    28
    29
    30
    31
    32
     
    if (isset($_GET['cam']) && isset($_GET['lat']) && isset($_GET['lng']))
    {
      $conn = conn_pdo();
      try
      {
        $conn->beginTransaction();
        echo "INSERT INTO cam (cam_id,cam_lat,cam_lng) 
              VALUES ('{$_GET['cam']}','{$_GET['lat']}','{$_GET['lng']}') 
              ON DUPLICATE KEY UPDATE cam_lat='{$_GET['lat']}',cam_lng='{$_GET['lng']}'";
     
     
     
        $stmt = $conn->prepare("INSERT INTO cam (cam_id,cam_lat,cam_lng) 
              VALUES (:valcam,:vallat,:vallng) 
              ON DUPLICATE KEY UPDATE cam_lat=:uplat,cam_lng=:uplng");
        $stmt->bindParam(':valcam', $_GET['cam']);
        $stmt->bindParam(':vallat', $_GET['lat']);
        $stmt->bindParam(':vallng', $_GET['lng']);
        $stmt->bindParam(':uplat', $_GET['lat']);
        $stmt->bindParam(':uplng', $_GET['lng']);
        $stmt->execute();
        echo $stmt->rowcount();
     
      }
      catch (Exception $e)
      {
        $conn->rollBack();
        echo 'Erreur : '.$e->getMessage().'<br />';
        echo 'N° : '.$e->getCode();
      }
    }
    mais ca m'affiche la meme chose
    N'oublie pas le pouce vert

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je suis surpris que les erreurs ne remontent pas.
    Tu as essayé sans la transaction ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre régulier
    Avatar de sourcilpower
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2011
    Messages : 128
    Points : 124
    Points
    124
    Billets dans le blog
    2
    Par défaut
    Non plus cela ne marche pas juste incroyable
    N'oublie pas le pouce vert

  10. #10
    Membre régulier
    Avatar de sourcilpower
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2011
    Messages : 128
    Points : 124
    Points
    124
    Billets dans le blog
    2
    Par défaut
    en farfouillant j'ai trouver ceci et ca marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $conn->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    if (isset($_GET['cam']) && isset($_GET['lat']) && isset($_GET['lng']))
    {
      $conn = conn_pdo();
      $conn->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
      try
      {
        $conn->beginTransaction();
        echo "INSERT INTO cam (cam_id,cam_lat,cam_lng) 
              VALUES ('{$_GET['cam']}','{$_GET['lat']}','{$_GET['lng']}') 
              ON DUPLICATE KEY UPDATE cam_lat='{$_GET['lat']}',cam_lng='{$_GET['lng']}'";
     
     
     
        $stmt = $conn->prepare("INSERT INTO cam (cam_id,cam_lat,cam_lng) 
              VALUES (:valcam,:vallat,:vallng) 
              ON DUPLICATE KEY UPDATE cam_lat=:uplat,cam_lng=:uplng");
        $stmt->bindParam(':valcam', $_GET['cam']);
        $stmt->bindParam(':vallat', $_GET['lat']);
        $stmt->bindParam(':vallng', $_GET['lng']);
        $stmt->bindParam(':uplat', $_GET['lat']);
        $stmt->bindParam(':uplng', $_GET['lng']);
        $stmt->execute();
        echo $stmt->rowcount();
        $conn->commit();
     
      }
      catch (Exception $e)
      {
        $conn->rollBack();
        echo 'Erreur : '.$e->getMessage().'<br />';
        echo 'N° : '.$e->getCode();
      }
    }
    N'oublie pas le pouce vert

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

Discussions similaires

  1. Erreur SQL 1442, Requete UPDATE ne marche pas
    Par noxa02 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 20/03/2012, 00h06
  2. inner join pour requete update ne marche pas
    Par Garra dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/01/2006, 13h14
  3. Réponses: 3
    Dernier message: 12/10/2005, 20h54
  4. requête update qui marche pas
    Par MrsFrizz dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/12/2004, 08h16
  5. requete(jointure 2 tables) qui marche pas
    Par DaxTaz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2004, 17h50

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