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

    Par défaut

    Oké merci , ça me rassure.

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

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

    Informations forums :
    Inscription : mars 2004
    Messages : 3 484
    Points : 1 217
    Points
    1 217

    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 expérimenté
    Avatar de FMaz
    Inscrit en
    mars 2005
    Messages
    649
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 649
    Points : 590
    Points
    590

    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
    Nouveau 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 : 26
    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 : 34
    Points
    34

    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 émérite 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 : 43
    Localisation : Algérie

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

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

    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
    Expert Confirmé
    Avatar de christele_r
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    novembre 2009
    Messages
    1 394
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 67
    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 394
    Points : 2 624
    Points
    2 624
    Billets dans le blog
    1

    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
    23 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 23 648
    Points : 34 792
    Points
    34 792

    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
    Expert Confirmé
    Avatar de christele_r
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    novembre 2009
    Messages
    1 394
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 67
    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 394
    Points : 2 624
    Points
    2 624
    Billets dans le blog
    1

    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
    Invité de passage
    Inscrit en
    avril 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : avril 2009
    Messages : 11
    Points : 1
    Points
    1

    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 du Club Avatar de slack457
    Homme Profil pro
    Inscrit en
    juillet 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : juillet 2009
    Messages : 120
    Points : 63
    Points
    63

    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 confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    mai 2002
    Messages
    568
    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 : 568
    Points : 259
    Points
    259

    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
    23 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 23 648
    Points : 34 792
    Points
    34 792

    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
    Candidat au titre de Membre du Club
    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 : 10
    Points
    10

    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é ?

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