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 :

Requête préparée UPDATE


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 74
    Par défaut Requête préparée UPDATE
    Bonsoir,
    Toujours en phase d'apprentissage j'ai suivant un tuto réalisé une requête (INSERT INTO) avec ce code qui fonctionne parfaitement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $requete = $connexion->prepare("INSERT INTO visdom(nom_cl,prenom_cl,localisation,typelog,statut,acces_1,acces_2,acces_3,acces_4) 
    VALUES (:nom_cl, :prenom_cl, :localisation, :typelog, :statut, :acces_1, :acces_2, :acces_3, :acces_4)");
    Pour maintenant faire une requête (UPDATE) j'ai gardé exactement le mème code en changeant seulement la requête préparée ce qui me paraissait pour ma part pertinent comme modification cela dit ça ne fonctionne pas hélas, pouvez vous me dire ce que j'ai mal fait svp ?

    Merci à vous.

    Mon script pour une requête UPDATE:
    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
    49
    50
    51
    52
    53
     
    <?php>
     
    $serveur 	= "sql.free.fr";
    $login 		= "login";
    $pass 		= "mdp";
     
    $nom_cl   		= $_POST['nom_cl'];
    $prenom_cl   	    = $_POST['prenom_cl'];
    $localisation       = $_POST['localisation'];
    $typelog   		= $_POST['typelog'];
    $statut   		= $_POST['statut'];
    $acces_1  		= $_POST['acces_1'];
    $acces_2   		= $_POST['acces_2'];
    $acces_3   		= $_POST['acces_3'];
    $acces_4   		= $_POST['acces_4'];
     
     
    	try
     
    	{
    	$connexion = new PDO("mysql:host=$serveur;dbname=visdom;charset=UTF8", $login, $pass);
    	$connexion -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
     
    	$requete = $connexion->prepare("UPDATE visdom SET (nom_cl,prenom_cl,localisation,typelog,statut,acces_1,acces_2,acces_3,acces_4) 
    						VALUES (:nom_cl,:prenom_cl,:localisation,:typelog,:statut,:acces_1,:acces_2,:acces_3,:acces_4)
    						WHERE nom_cl=':nom_cl' AND prenom_cl= ':prenom_cl");
     
    	$requete->bindParam(":nom_cl", $nom_cl);
    	$requete->bindParam(":prenom_cl", $prenom_cl);
    	$requete->bindParam(":localisation", $localisation);
    	$requete->bindParam(":typelog", $typelog);
    	$requete->bindParam(":statut", $statut);
    	$requete->bindParam(":acces_1", $acces_1);
    	$requete->bindParam(":acces_2", $acces_2);
    	$requete->bindParam(":acces_3", $acces_3);
    	$requete->bindParam(":acces_4", $acces_4);
     
     
    	$requete->execute();
     
    	}
     
    catch(PDOException $e)
    {
     
    echo 'Echec de la connexion : ' .$e->getMessage();
     
    }
     
     
    ?>

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    La syntaxe d'une requête update est:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    Update nom_table set nom_colonne1='sd', nom_colonne2='sd' where id_table= 1234;
    Si tu n'utilises pas la clause where, la requête va mettre à jour toute la table avec les mêmes valeurs, soit aucune mise à jour n'est faite si sql_safe_updates est activé.

    A+.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1-


    2- Pour mettre à jour un enregistrement, on utilise son id (auto-incrémenté, donc UNIQUE) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="id" value="<?php echo $id; ?>" />
    .
    on le récupère ensuite :
    Ensuite :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $sql = "UPDATE nom_table SET 
       colonne1 = :colonne1, 
       colonne2 = :colonne2,
    ...
       colonnex = :colonnex,
       WHERE id = :id";
    N.B. Par convention, on met :
    • les instructions SQL en majuscules (SELECT, UPDATE, WHERE,.....)
    • les noms de tables et colonnes en minuscules

    C'est plus lisible.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 74
    Par défaut
    Bonsoir,
    Merci pour vos répopnses, j'ai corrigé et établi mon code de cette façon et ça à l'air d'être correct.

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php>
     
    $serveur 	= "sql.free.fr";
    $login 		= "mon_login";
    $pass 		= "mon_mdp";
     
    $nom_cl   		= $_POST['nom_cl'];
    $prenom_cl   	= $_POST['prenom_cl'];
    $localisation   = $_POST['localisation'];
    $typelog   		= $_POST['typelog'];
    $statut   		= $_POST['statut'];
    $acces_1  		= $_POST['acces_1'];
    $acces_2   		= $_POST['acces_2'];
    $acces_3   		= $_POST['acces_3'];
    $acces_4   		= $_POST['acces_4'];
     
     
    try
     
    {
            $bdd = new PDO('mysql:host=localhost;dbname=visdom;charset=utf8', $login, $pass);
            $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
    }
     
    catch(Exception $e)
     
    {
            die('Erreur : '.$e->getMessage());
    }
     
    $req = $bdd->prepare('UPDATE visdom SET nom_cl = :nom_cl, prenom_cl = :prenom_cl, localisation = :localisation, typelog = :typelog, statut = :statut, acces_1 = :acces_1, acces_2 = :acces_2, acces_3 = :acces_3, acces_4 = :acces_4  WHERE nom_cl = :nom_cl  AND prenom_cl = :prenom_cl');
     
     
     
        $req->bindValue('nom_cl',$_POST['nom_cl']);
        $req->bindValue('prenom_cl',$_POST['prenom_cl']);
        $req->bindValue('localisation',$_POST['localisation']);
    	$req->bindValue('typelog',$_POST['typelog']);
    	$req->bindValue('statut',$_POST['statut']);
    	$req->bindValue('acces_1',$_POST['acces_1']);
    	$req->bindValue('acces_2',$_POST['acces_2']);
    	$req->bindValue('acces_3',$_POST['acces_3']);
    	$req->bindValue('acces_4',$_POST['acces_4']);
     
     
    if (!$req->execute()) 
     
    {
        echo 'Erreur';
    } 
     
    else 
     
    {
    	echo "connexion_bdd=1";
    }
     
    ?>

  5. #5
    Invité
    Invité(e)
    Par défaut
    Tu n'as pas tenu compte de mes conseils.

    Si la personne modifie/corrige son nom ou prénom, ton code ne fonctionnera pas.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 74
    Par défaut
    Dans le principe l'utilisateur ne modifira pas le nom et premon car il s'agit de son fichier client en quelque sorte, de l'application il entre le nom et prénom de son client et charge les données de celui-ci, il modifie certaines de ses données et termine avec un update.

Discussions similaires

  1. [PHP 5.6] Requêtes préparées INSERT INTO ou UPDATE et variable
    Par modus57 dans le forum Langage
    Réponses: 7
    Dernier message: 27/03/2018, 12h14
  2. Requête préparée et UPDATE
    Par redoran dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 29/04/2012, 16h19
  3. pb requête delete/update avec opérateur like, connexion ADO
    Par jerome666 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 09/02/2006, 16h47
  4. Access - Requête SQL - UPDATE
    Par tchoo83 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 19/12/2005, 15h48
  5. Réponses: 4
    Dernier message: 05/04/2005, 18h28

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