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

EDI, CMS, Outils, Scripts et API PHP Discussion :

PDO - pas facile de faire un update


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2016
    Messages : 3
    Points : 2
    Points
    2
    Par défaut PDO - pas facile de faire un update
    Bonjour,

    J'ai passé l'après-midi dessus, mais là je sèche vraiment....
    Mon "savoir" date de 2011 et les sites que je gère datent de la même époque, mais il serait temps de faire le grand saut entre le php 5.4 et le php 5.6.... Quelqu'un peut éclairer ma lumière ?

    J'aimerais passer de ceci (qui fonctionne correctement):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $mail= $_SESSION['adminsite'];
    mysql_connect('hebergeur', 'user', 'mdp') or die( mysql_error() );
    mysql_select_db( 'user' ) or die( mysql_error() );
    $mail= $_SESSION['adminsite'];
    mysql_query("UPDATE team SET date = NOW() WHERE `pseudo` ='$mail'");
    A celà:

    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
    $mail= $_SESSION['adminsite'];
    $host = 'hebergeur';
    $user = 'user';
    $pass = 'mdp';
    $database = 'user';
     
    $options = array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_EMULATE_PREPARES => false
    );
     
    $pdo = new PDO("mysql:host=$host;dbname=$database", $user, $pass, $options);
    $date = date("Y-m-d");  /* A moins qu'un NOW() ? */
    
     echo $mail; /* répond correctement*/
    echo $date; /* répond correctement*/
    $envoi=$pdo->prepare("UPDATE team SET date =$date WHERE `pseudo` =$mail");
    
    $envoi->execute();
    Bien entendu, je n'en touche pas une en pdo, je suis complètement à la ramasse.... Un peu de pitié et une bonne âme pour me guider vers la bonne voie?

  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
    Tes guillemets sur $mail ont disparu entre ta requête mysql et ta requête PDO.
    Mais puisque tu utilises une requête préparées tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $envoi=$pdo->prepare("UPDATE team SET date = CURDATE() WHERE `pseudo` = ?");
     
    $envoi->execute(array($_SESSION['adminsite']));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2016
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Parfait

    Puis-je abuser en demander un lien vers des tutoriels concis et récents en français?
    Google n'a pas été mon ami à ce sujet

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Il y a un tuto ici. Il date de 2010 mais il est toujours d'actualité.
    J'ai donné des informations complémentaires ici pour faire une petite mise à jour, notamment pour les options de connexion et pour mentionner la possibilité de passer un tableau dans la fonction execute(), ce qui est bien pratique.

  5. #5
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2016
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Solution
    Salut,

    En PDO le but de faire une requête préparée est justement de faire passer aucune variable dans la requête, essaye mon code :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $envoi=$pdo->prepare("UPDATE team SET date = :date WHERE pseudo =:pseudo")->execute(['date' => $date, 'pseudo' => $mail]);

    Tu fais bien de passer à PDO ! Là la date va être changée selon la valeur du champs pseudo, tu devrai également changer le nom de ta variable, mettre $mail pour un champ pseudo n'est pas très logique. ^_^

    @+

Discussions similaires

  1. [XL-2003] Faire un tableau multi-dimensionnel, pas facile (intégrer et trier)
    Par will-1981 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/11/2010, 16h17
  2. requete sql plutot pas facile a faire
    Par kaking dans le forum Langage SQL
    Réponses: 27
    Dernier message: 15/01/2009, 08h22
  3. Réponses: 6
    Dernier message: 21/02/2008, 13h23
  4. Réponses: 1
    Dernier message: 08/08/2007, 08h45
  5. Réponses: 1
    Dernier message: 09/02/2007, 16h03

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