+ Répondre à la discussion Actualité déjà publiée
Page 4 sur 4 PremièrePremière 1234
  1. #61
    Membre habitué
    Inscrit en
    avril 2003
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 381
    Points : 128
    Points
    128

    Par défaut

    Oké merci , ça me rassure.

  2. #62
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    mars 2004
    Messages
    3 522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2004
    Messages : 3 522
    Points : 1 265
    Points
    1 265

    Par défaut

    Bonjour,

    Je trouve que c'est un bon tuto qui va beaucoup m'aider dans mon apprentissage.

    Merci.

    beegees

  3. #63
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 643
    Points : 623
    Points
    623

    Par défaut

    Citation Envoyé par beegees Voir le message
    Bonjour,

    Je trouve que c'est un bon tuto qui va beaucoup m'aider dans mon apprentissage.

    Merci.

    beegees

    Me voilà heureux alors ! Bonne route !

  4. #64
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : avril 2011
    Messages : 48
    Points : 61
    Points
    61

    Par défaut coquille

    Bonjour,

    Il me semble avoir vu une petite faute dans l'instanciation de la connexion.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdo = new PDO($connStr, 'Utilisateur', 'Mot de passe', $arrExtraParam);
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdo = new PDO($strConnection, 'Utilisateur', 'Mot de passe', $arrExtraParam);
    Sinon merci pour ce tuto,
    Bilal

  5. #65
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : juin 2010
    Messages : 1 346
    Points : 1 029
    Points
    1 029

    Par défaut

    L'article à été écris pour être une base d'apprentissage saine à PDO. J'ai donc essayé de casser certains "mythes". Par la suite, la lecture d'article plus poussée devrait être facilité.
    toute a fait d'accord , personnellement j'ai appris pas mal de choses encore bravo +++
    juste faut voir le format pdf qui est un peut mal imprimer (page 8) .

  6. #66
    Membre émérite
    Avatar de christele_r
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    novembre 2009
    Messages
    1 462
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 68
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2009
    Messages : 1 462
    Points : 2 749
    Points
    2 749
    Billets dans le blog
    2

    Par défaut

    Bonjour,
    Je découvre bien tardivement ton TOPO sur PDO !
    Un vrais bijoux, et pour cela mille bravos

    Je sais qu'il faut garder la "légéretée" a ton sujet, il n'empéche que
    le mécanisme du PREPARE qui reste un pilier de PDO
    (pas obligatoir comme tu l'a souligné) mériterait quelques précisions.

    A ce sujet je te soumet une analyse dont tu fera le trie si bon te semble
    pour l'incorporer si tu juges que cela n'alourdirait pas ton sujet.

    ____________________________________
    Préparé ou pas, avec ou sans bindparam, au final chaque exec envoie en une seule fois la requête et les vraies variables au gestionnaire de base de données (par exemple MySql) a la différence du PREPARE SQL !

    Dans un PREPARE (SQL par exemple) le gestionnaire reçoit et analyse la requête et attend tout envoi de données sur le pointeur de l'instruction préparée.

    Voilà pour le prépare ...
    ______________________________________

    Concernant "protection" "injection" et "échappement"

    l' injection doit être évitée par un contrôle (de notre choix)

    Pour le reste "protection" "échappement"

    Juste un petit historique que vous connaissez bien sur:

    Au début nous faisions avant un INSERT ou autre ... le fameux addslashes()
    avec la douce contrainte de contrôler l'état d' activation de ou non des magic_quotes_gpc...

    le résultat .. plein d' antislashs et obligé a la relecture de faire un
    stripslashes()

    Maintenant, les versions modernes de SQL / PHP ont cette superbe fonction
    mysql_real_escape_string qui fait EXACTEMENT la même chose que PDO

    A savoir doubler les ' et inscrire les caractères spéciaux et accentués sur deux octets ! ce qui protége bien les données.

    Ainsi la relecture est directe sans instructions !!
    ____________________________________

    A++ et encore BRAVO !
    Christele

  7. #67
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    26 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 26 297
    Points : 39 104
    Points
    39 104

    Par défaut

    Préparé ou pas, avec ou sans bindparam, au final chaque exec envoie en une seule fois la requête et les vraies variables au gestionnaire de base de données (par exemple MySql) a la différence du PREPARE SQL !
    Pour Mysql (je ne sais pas pour les autres drivers), la préparation est par défaut émulé par soucis de compatibilité avec mysql < 5.1 mais il est possible d'utiliser la préparation du serveur mysql en changeant le paramètre ATTR_EMULATE_PREPARES.

    Maintenant, les versions modernes de SQL / PHP ont cette superbe fonction
    mysql_real_escape_string qui fait EXACTEMENT la même chose que PDO
    pas vraiment moderne : cette fonction existe depuis 11 ans et est maintenant classé comme obsolète à ne plus utiliser.
    Quand au fait qu'elle ferrait la même chose que PDO je ne vois pas trop à quoi tu fais référence.
    A savoir doubler les ' et inscrire les caractères spéciaux et accentués sur deux octets ! ce qui protége bien les données.
    Les accents ne posent pas de problème dans les requêtes et ne sont pas modifiés par mysql_real_escape_string. Ca serait d'ailleurs bien gênant d'avoir des caractères multioctet dans un encodage simple octet non ?

  8. #68
    Membre émérite
    Avatar de christele_r
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    novembre 2009
    Messages
    1 462
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 68
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2009
    Messages : 1 462
    Points : 2 749
    Points
    2 749
    Billets dans le blog
    2

    Par défaut

    Citation Envoyé par sabotage Voir le message
    Pour Mysql (je ne sais pas pour les autres drivers), la préparation est par défaut émulé par soucis de compatibilité avec mysql < 5.1 mais il est possible d'utiliser la préparation du serveur mysql en changeant le paramètre ATTR_EMULATE_PREPARES.
    Je n'ais pas contrôlé depuis longtemps, mais par défault j'étais "True" de base


    Citation Envoyé par sabotage Voir le message
    mysql_real_escape_string()
    pas vraiment moderne : cette fonction existe depuis 11 ans et est maintenant classé comme obsolète à ne plus utiliser.
    Quand au fait qu'elle ferrait la même chose que PDO je ne vois pas trop à quoi tu fais référence.
    Je fais référence justement a la protection des données tels que je l'ais écris
    plus bas.


    Citation Envoyé par sabotage Voir le message
    Les accents ne posent pas de problème dans les requêtes et ne sont pas modifiés par mysql_real_escape_string. Ca serait d'ailleurs bien gênant d'avoir des caractères multioctet dans un encodage simple octet non ?
    Oui tu as raison Sabotage, mais c'est ce que m'indique mon éditeur hexadécimal
    Dans un fichier non UTF8 j'ais bien cela ... mais tu me mets le doute,
    c'est peut-étre l'export en *.SQL qui provoque cela ???

    Bref tu m'as mis un gros doute sur tout cela, je vais appronfondir ces trois points

    A++ et merci
    Christele

  9. #69
    Futur Membre du Club
    Profil pro
    Inscrit en
    avril 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2009
    Messages : 11
    Points : 5
    Points
    5

    Par défaut une erreur dans le tuto

    Je note une erreur dans le paragraphe nommé
    III.a. Établir une connexion avec PDO

    Le bloc try pour la connexion est écrit ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try {
        $strConnection = 'mysql:host=localhost;dbname=ma_base'; //Ligne 1
        $arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"); //Ligne 2
        $pdo = new PDO($connStr, 'Utilisateur', 'Mot de passe', $arrExtraParam); //Ligne 3; Instancie la connexion
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//Ligne 4
    }
    or la variable de la ligne 3 (commentée "//Ligne 3; Instancie la connexion"), $connStr, sort de nulle part. En fait, c'est la variable $strConnection qu'on devrait trouver à cet endroit.

    La ligne marquée 3 en commentaire devrait donc être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdo = new PDO($strConnection, 'Utilisateur', 'Mot de passe', $arrExtraParam); //Ligne 3; Instancie la connexion

  10. #70
    Membre régulier Avatar de slack457
    Homme Profil pro
    Inscrit en
    juillet 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : juillet 2009
    Messages : 126
    Points : 97
    Points
    97

    Par défaut

    wow, super tuto !

    Tout est si clair, j'ai beaucoup apprécié de pouvoir comparer les codes MySQL et PDO, ça aide énormément à la compréhension.
    J'avais du mal a vraiment comprendre solidement PDO avec les autres tutos que j'ai pu lire sur le WEB. Pas avec celui-ci !

    Un grand merci !

    PS : bien vu maildeseb

  11. #71
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    mai 2002
    Messages
    596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mai 2002
    Messages : 596
    Points : 311
    Points
    311

    Par défaut

    merci pour l'article je me met à PDO mais y une chose que j'ai pas compris dans cet article
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $arrExtraParam = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"); //Ligne 2
    on a initialisé la variable $arrExtraParam
    mais jamais utilisée, comment l'utiliser ?
    peut être comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION, $arrExtraParam); //Ligne 4

  12. #72
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    26 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 26 297
    Points : 39 104
    Points
    39 104

    Par défaut

    $arrExtraParam est utilise la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $arrExtraParam= array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"); //Ligne 2
        $pdo = new PDO($connStr, 'Utilisateur', 'Mot de passe', $arrExtraParam); //Ligne 3; Instancie la connexion
    http://fmaz.developpez.com/tutoriels...re-pdo/#LIII.a

  13. #73
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    mai 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : mai 2007
    Messages : 42
    Points : 20
    Points
    20

    Par défaut rowCount()

    Bonjour,

    Je reconnais le sujet commence à dater un peux, mais j'ai quelques remarques à faire dessus :

    1.Il me semble constater une erreur dans le paragraphe V.a :
    Dans la partie sans préparation de la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $query = 'SELECT * FROM foo;';
    $statement = $pdo->query();
     
    echo $statement->rowCount() . ' résultat(s)';
    La ligne 2 devrait s'écrire comme ça $statement = $pdo->query($query);. (Sauf erreur de ma part)

    2.Toujours dans le paragraphe V.a La fonction rowCount() est utilisé sur une requête de type SELECT.
    Il est indiqué dans la documentation PHP que cette utilisation n'est pas recommandée.
    Peut-on donc vraiment utiliser cette fonction pour avoir le nombre de ligne sélectionné ?

  14. #74
    Expert éminent

    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2010
    Messages
    3 966
    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 : 3 966
    Points : 7 325
    Points
    7 325

    Par défaut

    Bonjour,

    Ce tuto date un peu, néanmoins c'est une bonne base pour l'introduction à pdo (notamment pour ceux qui viennent de mysql puisque les syntaxes sont comparées au début) et il est encore assez visité c'est pourquoi je me permet quelques précisions :

    1/ la connexion chapitre III.a
    2/ Explication du faux bug de la clause limit chapitre V.c
    3/ le nombre de paramètres dynamique chapitre IV.b.

    1/ Depuis quelques années on peut passer le charset dans la chaine de connexion ce qui évite d'ajouter une option de configuration.
    Plus important il est très recommandé de désactiver l'émulateur pdo de php pour laisser travailler celui du sgbdd. Si le sgbdd n'a pas de gestionnaire pdo alors celui de php se remettra en marche même avec l'option désactivée. Le gros avantage est que le gestionnaire pdo du sgbdd est plus performant (car optimisé pour le sgbdd) et surtout vous ne serez plus contraints de formater vos variables en entiers pour les passer dans la clause limit (cf chapitre V.c). En effet le gestionnaire interne du sgbdd saura retourner le bon type en fonction des besoins de la requête.

    En suivant ces principes on peut donc faire une connexion de ce type :
    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
    try {
        $connStr = 'mysql:host=localhost;dbname=ma_base;charset=utf8';
     
        // Désactive l'émulateur pdo de php pour utiliser celui du sgbdd si disponible
        $arrExtraParam[PDO::ATTR_EMULATE_PREPARES] = false;
        $arrExtraParam[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        // Si l'on souhaite utiliser le mode objet par défaut pour récupérer les données
        // $arrExtraParam[PDO::ATTR_DEFAULT_FETCH_MODE] = PDO::FETCH_OBJ;
     
        $pdo = new PDO($connStr, 'Utilisateur', 'Mot de passe', $arrExtraParam);
    }
    catch(PDOException $e) {
        $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
        exit($msg);
    }
    Avec ce type de connexion, la problématique du chapitre V.c disparaît. Cela ouvre également la perspective de pouvoir passer une clause limit dans un tableau passé en paramètre à la fonction execute(). Autrement ce ne serait pas possible car les éléments des tableaux passés dans la fonction execute() sont formatés en string.

    Ce qui m'amène au chapitre IV.b qui est codé de manière un peu alambiquée (comme le confirme le commentaire à la fin du paragraphe).
    On pourrait faire plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $arr = array(12, 62, 61, 36, 92); // Le nombre d'éléments est variable.
     
    $count_arr = is_array($arr)? count($arr) : 0;
    if($count_arr > 0)
    {
    	$strPH = implode(',', array_fill(0,$count_arr,'?'));
     
    	$query = "SELECT * FROM membres WHERE id IN(" .$strPH. ")";
    	$prep = $pdo->prepare($query);
     
    	$prep->execute($arr);
     
    	$arrAll = $prep->fetchAll();
    }
    Maintenant si je souhaite ajouter une clause limit également dynamique :
    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
    $arr = array(12, 62, 61, 36, 92); //Le nombre d'éléments recherchés est variable.
    $limite = 2;
     
    $count_arr = is_array($arr)? count($arr) : 0;
    if($count_arr > 0)
    {
    	$strPH = implode(',', array_fill(0,$count_arr,'?'));
     
    	$query = "SELECT * FROM membres WHERE id IN(" .$strPH. ") LIMIT ?";
    	$prep = $pdo->prepare($query);
     
    	array_push($arr,$limite);
     
    	$prep->execute($arr);
     
    	$arrAll = $prep->fetchAll();
    }
    Notez que si je n'avais pas désactivé l'émulateur pdo de php dans les options de connexion, cette requête ne fonctionnerait pas.

  15. #75
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 643
    Points : 623
    Points
    623

    Par défaut

    Bonjour à tous.

    Merci pour vos commentaires constructif. Ce tutoriel était mon premier (et seul ici je crois). Depuis sa publication, j'ai changé de carrière donc je n'ai pas été très actif sur ce forum (pas dutout en fait). Donc par rapport à vos commentaires:

    ABCIWEB:
    - pour ce qui est de la méthode SGBDD, honnêtement je ne connais pas. Les choses ont peuvent avoir changées, mais j'ai probablement oublié depuis le temps.
    - En ce qui concerne l'exemple des place holders dynamique, je ne cherchais pas à démontrer la meilleure méthode, ni la plus compacte, ni la plus rapide. Mais la plus facile à comprendre. En ce sens, je trouve que l'exemple que j'ai proposé est plus facile à suivre et à comprendre que le (probablement meilleur) code que tu présente.

    Loup Solitaire:
    - semble avoir raison au sujet de la petite erreur, il faudrait que quelqu'un corrige $statement = $pdo->query(); -> $statement = $pdo->query($query); -

    maildeseb
    - Même chose, bien vu, il y a une erreur dans le code qui établi la connexion.


    Bref, je n'ai plus les outils de publication, ni les connaissances pour mettre à jour le tuto par rapport aux nouvelles pratiques ou aux nouvelles versions de PHP. Si quelqu'un est capable de reprendre la gouverne de ce tutoriel, j'offre mon accord à Developpez.net de le ré-attritrer le tutorial à un auteur capable de faire les modifications nécéssaires. Je souhaite seulement que mon nom demeure comme étant l'auteur original de l'article.

    Ps.: Je recois encore les emails de notification...




    Encore une fois merci à tous pour vos commentaires ! (Et désolé de ne pas pouvoir effectuer les corrections moi-même )

  16. #76
    Membre émérite
    Avatar de christele_r
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    novembre 2009
    Messages
    1 462
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 68
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : novembre 2009
    Messages : 1 462
    Points : 2 749
    Points
    2 749
    Billets dans le blog
    2

    Par défaut

    Citation Envoyé par FMaz Voir le message
    Bonjour à tous.

    Merci pour vos commentaires constructif. Ce tutoriel était mon premier (et seul ici je crois). Depuis sa publication, j'ai changé de carrière donc je n'ai pas été très actif sur ce forum (pas dutout en fait). Donc par rapport à vos commentaires:

    Bref, je n'ai plus les outils de publication, ni les connaissances pour mettre à jour le tuto par rapport aux nouvelles pratiques ou aux nouvelles versions de PHP. Si quelqu'un est capable de reprendre la gouverne de ce tutoriel, j'offre mon accord à Developpez.net de le ré-attritrer le tutorial à un auteur capable de faire les modifications nécessaires. Je souhaite seulement que mon nom demeure comme étant l'auteur original de l'article.

    Ps.: Je reçois encore les emails de notification...
    Encore une fois merci à tous pour vos commentaires ! (Et désolé de ne pas pouvoir effectuer les corrections moi-même )
    En fait PDO n'est pas Mysql !! tout vient de là !
    Il y a en résumé : Mysql (Périmé), Mysqli conservé et PDO_Mysql qui a mon sens reste la roll's.
    Regardes ceci http://php.net/manual/fr/mysqlinfo.api.choosing.php

    Je ne peux pas me proposé à reprendre ton article, mais ça pourrait se faire à la rentrée.
    Amitiées
    A bientôt
    Jean-Pierre et Evelyne
    Et notre Christèle la blogueuse du site
    et venez lire mes premiers articles Ici. sur developpez.

  17. #77
    Expert éminent

    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2010
    Messages
    3 966
    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 : 3 966
    Points : 7 325
    Points
    7 325

    Par défaut

    Citation Envoyé par FMaz Voir le message
    En ce qui concerne l'exemple des place holders dynamique, je ne cherchais pas à démontrer la meilleure méthode, ni la plus compacte, ni la plus rapide. Mais la plus facile à comprendre. En ce sens, je trouve que l'exemple que j'ai proposé est plus facile à suivre et à comprendre que le (probablement meilleur) code que tu présente.
    C'est pas vraiment meilleur, c'est surtout plus pratique. Quand tu mentionnes à la fin du paragraphe IV.b. que "la perfection n'est pas de ce monde" c'est qu'effectivement le code devient un peu lourd avec des marqueurs dynamiques si l'on veut binder individuellement les variables.

    Tu ne pouvais guère faire mieux sauf en utilisant "array_fill" pour créer la chaine de marqueurs (mais ça reste une amélioration anecdotique), mais ce que je voulais surtout dire est que dans le cas de marqueurs dynamiques le passage du tableau de variables dans le execute() est la voie la plus pratique et du coup le code devient plus fluide Après on est bien d'accord que c'est pour optimiser le visuel et l'écriture du code, sinon c'est pas les foreach en plus qui vont changer significativement les performances pures.

    Pour le reste, l'histoire de désactiver l'émulateur pdo de php est une information que je ne vois pas assez à mon sens et pourtant c'est super pratique et plus performant donc dommage de s'en priver. D'autant plus qu'aujourd'hui tous les sgbdd ont leur propre gestionnaire pdo. Mais bon à l'époque de l'écriture du tuto cette info n'était peut être pas pertinente.

    Pour conclure, je te remercie de ce tuto car c'est celui dont je me suis servi en premier quand j'ai voulu passer à pdo après une longue période mysql puis mysqli. Je l'ai trouvé très bien fait, efficace, et il m'a permis d'acquérir rapidement de bonnes premières bases. Et c'est d'ailleurs parce que je continue à le recommander que j'ai voulu apporter ces quelques informations complémentaires pour l'actualiser

Discussions similaires

  1. [PDO] Problème de requête préparée (à n'y rien comprendre?)
    Par waldo2188 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 20/03/2007, 21h53
  2. [Concept][JavaBeans] Comprendre ?
    Par nicoo dans le forum Langage
    Réponses: 15
    Dernier message: 08/12/2004, 08h01
  3. [Procédure][java] A n'y rien comprendre
    Par Stessy dans le forum SQL
    Réponses: 2
    Dernier message: 18/03/2004, 15h05

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