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 :

Php update erronée


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut Php update erronée
    Bonjour à tous.
    Mon code Php est non maitrisé.
    Ce code ne marche pas. Pourquoi ?
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    if (isset($_POST['identifiant'])) {
        $order_number = $_POST['identifiant'];
        $employeur = $_POST['employeur'];
        $activite = $_POST['activite'];
        $salaire = $_POST['salaire'];
        $debutActivite = $_POST['debutActivite'];
        $finActivite = $_POST ['finActivite'];
        try {
    $host = '127.0.0.1';
            $db   = 'philippe';
            $user = 'root';
            $pass = '';
            $port = "3306";
            $charset = 'utf8mb4';
     
            $options = [
                \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
                \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
                \PDO::ATTR_EMULATE_PREPARES   => false,
            ];
            $dsn = "mysql:host=$host;dbname=$db;charset=$charset;port=$port";
            try {
                $pdo = new \PDO($dsn, $user, $pass, $options);
            } catch (\PDOException $e) {
                throw new \PDOException($e->getMessage(), (int)$e->getCode());
            }
     
    //       $pdo = new PDO('mysql:host=localhost;dbname=philippe','root','');
     
          $data = [
              'employeur' => $employeur,
              'activite' => $activite,
              'salaire' => $salaire,
              'debutActivite' => $debutActivite,
              'finActivite' => $finActivite,
              'order_number' => $order_number,
                  ];
     
          $sql = "UPDATE orders SET employeur = :employeur,activite = :activite, salaire = :salaire, debutActivite = :debutActivite,
    finActivite =: finActivite  where order_number =: order_number";
     
          $stmt= $pdo->prepare($sql);
          $stmt->execute($data);  
     
        } catch (Exception $e) { echo "Erreure";}
     
        echo "Success";
    Je ne sais pas ou ça bug.
    Merci.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     $data = [
              'employeur' => $employeur,
              'activite' => $activite,
              'salaire' => $salaire,
              'debutActivite' => $debutActivite,
              'finActivite' => $finActivite,
              'order_number' => $order_number,
                  ];
    Les clefs du tableau doivent utiliser la notation ":placeholder", avec ":", ex. ':employeur' => $employeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          $sql = "UPDATE orders SET employeur = :employeur,activite = :activite, salaire = :salaire, debutActivite = :debutActivite,
    finActivite =: finActivite  where order_number =: order_number";
    Les ":" doivent être "collés" au nom de l'emplacement, ex. finActivite = :finActivite (et non pas finActivite =: finActivite )

  3. #3
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut Merci ceci fonctionne. Merci
    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
     
    <?php
    if (isset($_POST['identifiant'])) {
        $order_number = $_POST['identifiant'];
        $employeur = $_POST['employeur'];
        $activite = $_POST['activite'];
        $salaire = $_POST['salaire'];
        $debutActivite = $_POST['debutActivite'];
        $finActivite = $_POST ['finActivite'];
     
        try {
     
     
          $pdo = new PDO('mysql:host=localhost;dbname=philippe','root','');
     
          $sql = "UPDATE orders SET employeur=? , activite=?, salaire=?, debutActivite =?, finActivite =?  where order_number =?";
     
          $pdo->prepare($sql)->execute([$employeur, $activite, $salaire, $debutActivite, $finActivite, $order_number]);
     
        } catch (Exception $e) {echo "erreure";}
     
        echo "Success";
     
    }

  4. #4
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    Bonsoir,

    avec PDO, c'est bien plus lisible et maintenable avec des marqueurs nommés :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "UPDATE orders SET employeur=:employeur , activite=:activite, salaire=:salaire, debutActivite =:debutActivite, finActivite =:finActivite  where order_number =:order_number";
     
    $pdo->prepare($sql)->execute(['employeur'=>$employeur, 'activite'=> $activite, 'salaire'= $salaire, 'debutActivite'=>$debutActivite, 'finActivite'=>$finActivite, 'order_number'=>$order_number]);

  5. #5
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut
    Salut. Oui, mais je m'étais mélangé les pinceaux.

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    OK,
    si jamais tu changes la requête (ajout ou suppression d'une colonne), ça devient scabreux.

    Autre remarque : pour la connexion, on peut faire mieux : cf ce tuto : https://www.developpez.net/forums/bl...pdo-soupe-lit/

    PDO - Script de connexion à la base de donnees

    A la racine de votre site, dans le répertoire www si vous êtes sous WAMP, vous créez un fichier db_mysql.php.
    Et vous collez le code suivant :
    Bien sûr, vous changez ce qui a besoin de l’être dans les valeurs de votre connexion.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <?php
    // @author : rawsrc - 2018 - Pour DVP
    // on vérifie si la fonction de connexion a déjà été définie afin d'éviter de la redéfinir
    if ( ! function_exists('db_connexion')) {
       function db_connexion() {
          // une fois ouverte, on renvoie toujours la même connexion
          static $pdo;
          // on vérifie si la connexion n'a pas déjà été initialisée
          if ( ! ($pdo instanceof PDO)) {
             // tentative d'ouverture de la connexion MySQL
             try {
                $pdo = new PDO('mysql:host=localhost;port=3306;dbname=ma_base;charset=utf8','root', '', [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_EMULATE_PREPARES   => false
                ]);
             } 
             catch (PDOException $e) {
                throw new InvalidArgumentException('Erreur connexion à la base de données : '.$e->getMessage());
                exit;
             }
          }
          // renvoi de la ressource : connexion à la base de données
          return $pdo;
       }
    }
    return db_connexion();

    Comment tester votre connexion maintenant ?
    En mettant juste cette ligne, sur un fichier test.php au même niveau que votre fichier db_mysql.php :


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $db = include 'db_mysql.php';

    Et pour se connecter dans n'importe quel script, tu mets la ligne de code juste au-dessus...

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

Discussions similaires

  1. [PHP] UPDATE + SELECT
    Par fkoncept dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 13/02/2014, 18h17
  2. Tuto flash>php>sql erroné ?
    Par noyuw dans le forum Flash
    Réponses: 0
    Dernier message: 01/09/2012, 16h12
  3. PostgreSQL(libpq) Version PHP Update
    Par davland7 dans le forum Extensions
    Réponses: 0
    Dernier message: 23/04/2012, 21h58
  4. requete update erroné
    Par hidalg007 dans le forum JDBC
    Réponses: 6
    Dernier message: 03/12/2010, 01h45
  5. [SQL-Server] mssql/php update et variables non transmises
    Par evra76 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 26/06/2009, 11h03

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