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

    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 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

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

    Informations forums :
    Inscription : mars 2004
    Messages : 3 448
    Points : 1 198
    Points
    1 198

    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 :
    $pdo = new PDO($connStr, 'Utilisateur', 'Mot de passe', $arrExtraParam);
    au lieu de :
    Code :
    $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 369
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 66
    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 369
    Points : 2 582
    Points
    2 582
    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
    21 587
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 587
    Points : 31 457
    Points
    31 457

    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 369
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 66
    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 369
    Points : 2 582
    Points
    2 582
    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 :
    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 :
    $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
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : juillet 2009
    Messages : 118
    Points : 62
    Points
    62

    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
    557
    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 : 557
    Points : 257
    Points
    257

    Par défaut

    merci pour l'article je me met à PDO mais y une chose que j'ai pas compris dans cet article
    Code :
    $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 :
    $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
    21 587
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 587
    Points : 31 457
    Points
    31 457

    Par défaut

    $arrExtraParam est utilise la ligne suivante :
    Code :
    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 :
    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é ?

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •