PDO PHP : BindValue ou BindParam

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par sff, 12 Novembre 2018.

  1. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Bonjour, j'aimerais avoir votre avis concernant le code ci-dessous. A votre avis faut-il utiliser BindValue ou BindParam ? Dans les 2 cas le code fonctionne mais y a t'il une vraie différence ?

    Merci d'avance

    PHP:
    extract($_POST);

    $sql "UPDATE sales SET phone_number = :phone_number WHERE id_ad = :id_ad";

    try{

        
    $requete $bdd -> prepare($sql);
        
    $requete->bindValue(':phone_number'$_POST['var_phone'], PDO::PARAM_STR);
        
    $requete->bindValue(':id_ad'$_POST['var_id'], PDO::PARAM_STR);
        
    $requete->execute();
    De meme qu'en est t-il de PARAM_STR ?

    var_phone est tout simplement un numéro de téléphone (exemple : 0600000000)
    et var_id est un nombre de 8 chiffres.

    Serait-il par plus judicieux d'utiliser PARAM_INT ?

    Merci
     
    #1 sff, 12 Novembre 2018
    Dernière édition: 12 Novembre 2018
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 839
    J'aime reçus:
    248
    La différence est notée clairement dans la doc :
    http://php.net/manual/fr/pdostatement.bindparam.php

    Et le paramètre $data_type c'est pour lui spécifier explicitement le type afin qu'il ne mette pas de quotes à un integer par exemple.

    Donc oui PARAM_INT pour le numéro de téléphone, sauf s'il y a un "+" devant.

    HS: extract($_POST) ? tu émules le register globals o_O
    HS2: tu pourrais mapper les variables POST à celles de la requête SQL et faire plus simplement $requete->execute($_POST);
     
  3. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Merci pour l'astuce. extract($_POST) ne servait à rien d'ailleurs
     
  4. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Par contre comment se fait-il que je ne puisse pas utiliser ton astuce sur ce code ?

    PHP:
                $sql "UPDATE sales SET offline_ad = 1 WHERE id_ad = :id_ad";

                
    $requete2 $bdd -> prepare($sql);
                
    $requete2->bindParam(':id_ad'$element['id_ad'], PDO::PARAM_INT);   
                
    $requete2->execute();
    J'ai fais ceci mais cela ne fonctionne pas :

    PHP:
                $sql "UPDATE sales SET offline_ad = 1 WHERE id_ad = :id_ad";

                
    $requete2 $bdd -> prepare($sql);
                
    $requete2->execute($element); 
    $element['id_ad'] provient d'une requete SELECT pour info

    Merci
     
  5. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 839
    J'aime reçus:
    248
    Je me suis trompé ça ne va pas avec PDO tel quel, vu qu'il faut préfixer avec ":".
    Donc pour ton exemple $element['id_ad'] => $element[':id_ad'].

    PHP:
    $array array_combine(array_map(function($k){ return ':' $k; }, array_keys($array)), $array);
    https://ideone.com/UbtH6h
     
  6. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Étonnant car ce code fonctionne parfaitement sans ton array()

    PHP:
    $sql "UPDATE sales SET phone_number = :phone_number WHERE id_ad = :id_ad";

        
    $requete $bdd -> prepare($sql);
        
    $requete->execute($_POST);
    Concerant l'autre code il ne serait pas plus judicieux de le laisser tel quel plutôt que rajouter les array() ?

    PHP:
    $sql "UPDATE sales SET offline_ad = 1 WHERE id_ad = :id_ad";

                
    $requete2 $bdd -> prepare($sql);
                
    $requete2->bindParam(':id_ad'$element['id_ad'], PDO::PARAM_INT);   
                
    $requete2->execute();
     
  7. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Tu en pense quoi Spout ?
     
  8. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 839
    J'aime reçus:
    248
    J'en sais rien, fait ce qui te semble le mieux :)
     
Chargement...
Similar Threads - PDO PHP BindValue Forum Date
Pear/PhpDocumentor sur NetBeans PC Développement d'un site Web ou d'une appli mobile 22 Juin 2012
[PHP] Requête PDO à modifier Développement d'un site Web ou d'une appli mobile 13 Mai 2012
PHP -> PDO -> Fetch Développement d'un site Web ou d'une appli mobile 12 Avril 2012
[Mysql] Requête PDO avec variable php Développement d'un site Web ou d'une appli mobile 16 Février 2012
Erreur PHP PDO (Fatal error: Call to a member function query() on a non-object ...) Développement d'un site Web ou d'une appli mobile 11 Août 2010
SELECT COUNT avec PDO et récupérer le résultat Développement d'un site Web ou d'une appli mobile 27 Mai 2019
Problème PDO pour afficher le contenu d'une requête située dans un autre fichier Développement d'un site Web ou d'une appli mobile 10 Mars 2017
Outil tracking formulaires en dropdown Google Analytics 7 Juin 2016
PDO Comment vérifier le SQL d'une Requête ??? Développement d'un site Web ou d'une appli mobile 4 Février 2015
Menu de recherche dropdown avec les 30.000 villes de france, c'est lourd ? Développement d'un site Web ou d'une appli mobile 22 Avril 2013
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice