+ Répondre à la discussion Actualité déjà publiée
Page 2 sur 4 PremièrePremière 1234 DernièreDernière
Affichage des résultats 21 à 40 sur 73
  1. #21
    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

    Ca peut sembler étrange, mais c'est tout à fait volontaire de ma part. Cet article n'est pas un "tutorial à copier coller", qui explique et guide l'utilisateur vers une solution.

    Il s'agit d'un article concret, qui se veux une base de compréhension. En somme, si je veux expliquer comment se connecter, je ne veux pas enfouir les lignes importantes sous du code qui n'est pas nécessairement lié à l'explication. (J'ai souvent des clients qui m'arrivent avec du code qu'ils ont bêtement copié-collé de tutoriels et dont 50% de celui-ci est strictement inutile au projet. Au Québec on dit souvent: "trop c'est comme pas assez.")

    Donc il y a 2 buts à cet article:
    - Être un premier contact avec PDO, et permettre à un débutant de mieux comprendre les concepts derrière les futurs tutoriels qu'il lira.
    - Faire réaliser certains concepts à la base même de PDO qui ne sont pas toujours bien expliqué à une personne ayant déjà essayé, ou utilisant déjà PDO.

    Donc en aucun cas cet article ne prétend être un tutoriel du type "lisez-moi et convertissez vos projets vers PDO immédiatement après"

    Je n'ai pas abordé les exceptions plus qu'il faut, car je pense que le sujet dépasse le cadre de cet article, et je préférais consacrer un autre article bien distinct à ce sujet, qui est assez vaste quand même. (Et lorsque cet article existera, je ferais un beau lien: promis !)

  2. #22
    Expert Confirmé Sénior

    Inscrit en
    septembre 2010
    Messages
    7 957
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 7 957
    Points : 10 638
    Points
    10 638

    Par défaut

    Citation Envoyé par FMaz Voir le message
    Je n'ai pas abordé les exceptions plus qu'il faut, car je pense que le sujet dépasse le cadre de cet article, et je préférais consacrer un autre article bien distinct à ce sujet, qui est assez vaste quand même. (Et lorsque cet article existera, je ferais un beau lien: promis !)
    Donc mettre le ERRMODE_WARNING pour la connexion serai plus logique

  3. #23
    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

    Hum, tu me place face à un dilemme :
    - Si je configure ca en WARNING, c'est comme si je décourageais l'utilisation des exceptions.
    - Si je met des try-catch, je vais contre mon principe de simplicité...

    Bon bon, et si j'accepte de mettre un try-catch pour la connexion, tu va en exiger pour tous les exemples qui suivent aussi ?

    (Négocier, toujours négocier )

  4. #24
    Expert Confirmé Sénior

    Inscrit en
    septembre 2010
    Messages
    7 957
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 7 957
    Points : 10 638
    Points
    10 638

    Par défaut

    Citation Envoyé par FMaz Voir le message
    Hum, tu me place face à un dilemme :
    - Si je configure ca en WARNING, c'est comme si je décourageais l'utilisation des exceptions.
    - Si je met des try-catch, je vais contre mon principe de simplicité...

    Bon bon, et si j'accepte de mettre un try-catch pour la connexion, tu va en exiger pour tous les exemples qui suivent aussi ?

    (Négocier, toujours négocier )
    le try...catch pour la connexion est de toutes façons obligatoire, sinon impossible de savoir si c'est connecter, (a part avec if et instanseof PDO)

    on va dire si on fait du procédurale c'est plus simple de d'utilisé les exceptions, si on fait de l'objet on se tournera plus vers les exceptions, et rien n'empêche dans une classe de faire set_exception_hanlder non plus

  5. #25
    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

    Et maintenant ?
    http://fmaz.developpez.com/tutoriels...re-pdo/#LIII.a

    J'en ai profité pour faire 3 choses:
    - Montrer comment faire une trace d'une erreur.
    - Gérer l'exception
    - Ajouter la note sur le bug avec PHP 5.3.0

  6. #26
    Expert Confirmé Sénior

    Inscrit en
    septembre 2010
    Messages
    7 957
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 7 957
    Points : 10 638
    Points
    10 638

    Par défaut

    la t'auras un Fatal error à chaque erreur de requête fausse

    EDIT : t'as pas besoin de faire closeCursor() apres un fetchAll, c'est uniquement quand tu ne parcours pas tout les fetch (et y'a aussi fetchAll pour mysqli, mais uniquement quand il compilé avec mysqlnd donc <= 5.3.0)

  7. #27
    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

    Oui, je sais, c'est bien ce que j'ai dis plus haut ...
    Mais je vais pas mettre des try-catch pour tout les exemples, ca serait pénible à la lecture.

    Bon, je vais ajouter une note en même temps que celle qui dit que je ne vais pas ré-établir une connexion pour tous les exemples.

  8. #28
    Expert Confirmé Sénior

    Inscrit en
    septembre 2010
    Messages
    7 957
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 7 957
    Points : 10 638
    Points
    10 638

    Par défaut

    pourquoi tu voudrais ré-établir une connexion ?

  9. #29
    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

    Regarde le dernier paragraphe de la section http://fmaz.developpez.com/tutoriels...re-pdo/#LIII.a

  10. #30
    Expert Confirmé Sénior

    Inscrit en
    septembre 2010
    Messages
    7 957
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 7 957
    Points : 10 638
    Points
    10 638

    Par défaut

    ah oui ok, j'avais mal compris

  11. #31
    Membre chevronné
    Inscrit en
    mars 2005
    Messages
    622
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 622
    Points : 790
    Points
    790

    Par défaut

    J'ai pas vu d'exemple à propos de la méthode bindparam() dans ce tuto ?

    Un exemple d'utilisation pratique pour des insertions massives :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $noms = array( "tillom", "hochon", "issier" , "issier" );
    $prenoms = array( "jean" , "paul" , "paul" , "pat" );
    $stmt = $pdo->prepare( 'insert into maTable (nom, prenom) values (:nom,:prenom)' );
    $stmt->bindparam( ":nom" , $nom , PDO::PARAM_STR );
    $stmt->bindparam( ":prenom" , $prenom , PDO::PARAM_STR );
     
    foreach( $noms as $cle=>$nom ){
    	$prenom = $prenoms[ $cle ];
    	$stmt->execute();
    }
    Pourfendeur de singletons en croisade

  12. #32
    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

    Je sais. Il ne m'a pas semblé utile de couvrir cette fonction qui s'avère nécéssaire (obligatoire) que dans des cas très particulié.

    Merci cependant pour les précisions dans les commentaires

  13. #33
    Expert Confirmé Sénior

    Inscrit en
    septembre 2010
    Messages
    7 957
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 7 957
    Points : 10 638
    Points
    10 638

    Par défaut

    Citation Envoyé par FMaz Voir le message
    Je sais. Il ne m'a pas semblé utile de couvrir cette fonction qui s'avère nécéssaire (obligatoire) que dans des cas très particulié.

    Merci cependant pour les précisions dans les commentaires
    ouai pour du param_str et sans le param length ca sert pas a grand chose

  14. #34
    Expert Confirmé Avatar de Madfrix
    Profil pro
    Inscrit en
    juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : juin 2007
    Messages : 2 326
    Points : 2 532
    Points
    2 532

    Par défaut

    Citation Envoyé par stealth35 Voir le message
    ouai pour du param_str et sans le param length ca sert pas a grand chose
    Pour une question de sécurité ou autre ?

    Perso je mets jamais de param length, j'ai surement tords mais je délègue la longueur de ma chaine à ma base ( varchar(50), varchar(100)...). A lui de tronquer !

    Mais de toute manière, quand j'arrive à insérer en base, les contrôles php ont déjà été effectués en amont donc ce param ne me sers pas (du moins je pense)

  15. #35
    Expert Confirmé Sénior

    Inscrit en
    septembre 2010
    Messages
    7 957
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 7 957
    Points : 10 638
    Points
    10 638

    Par défaut

    Citation Envoyé par Madfrix Voir le message
    Pour une question de sécurité ou autre ?
    non c'est plus dans le sens ou par défaut tout est binder en str

  16. #36
    Expert Confirmé Avatar de Madfrix
    Profil pro
    Inscrit en
    juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : juin 2007
    Messages : 2 326
    Points : 2 532
    Points
    2 532

    Par défaut

    oki je croyais que tu rebondissais sur l'exemple de Petitbidon qui utilisait PDO:ARAM_STR sans longueur

  17. #37
    Expert Confirmé Sénior

    Inscrit en
    septembre 2010
    Messages
    7 957
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 7 957
    Points : 10 638
    Points
    10 638

    Par défaut

    Citation Envoyé par Madfrix Voir le message
    oki je croyais que tu rebondissais sur l'exemple de Petitbidon qui utilisait PDO:ARAM_STR sans longueur
    oui, ducoup le bind sert a rien puisque tout est par defaut, ca aurai été plus parlant avec un PARAM_INT, ou avec le paramètre length

    sinon on peux aussi mettre les tableau ou des objets en paramètre

    Code :
    1
    2
    $stmt->bindparam( ":nom" , $row['nom'] , PDO::PARAM_STR );
    $stmt->bindparam( ":prenom" , $row['prenom'] , PDO::PARAM_STR );

  18. #38
    Expert Confirmé Avatar de Madfrix
    Profil pro
    Inscrit en
    juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : juin 2007
    Messages : 2 326
    Points : 2 532
    Points
    2 532

    Par défaut

    ou alors créer des objets personne avec stdclass ou une classe Personne de facon à ce que si un nom ou un prenom manque, il soit insérer NULL en table et qu'il y est pas d'erreurs de membre prenom/nom manquant mais c'est un autre sujet^^

  19. #39
    Expert Confirmé Sénior

    Inscrit en
    septembre 2010
    Messages
    7 957
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 7 957
    Points : 10 638
    Points
    10 638

    Par défaut

    Citation Envoyé par Madfrix Voir le message
    ou alors créer des objets personne avec stdclass ou une classe Personne de facon à ce que si un nom ou un prenom manque, il soit insérer NULL en table et qu'il y est pas d'erreurs de membre prenom/nom manquant mais c'est un autre sujet^^
    ouai, voir le top faire un FETCH_CLASS
    faudrais que je fasse un sujet sur les FETCH y'a plein de truc simpa, comme le class, into, lazy, func et surtout le group

  20. #40
    Expert Confirmé Avatar de Madfrix
    Profil pro
    Inscrit en
    juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : juin 2007
    Messages : 2 326
    Points : 2 532
    Points
    2 532

    Par défaut

    Jamais utilisé FETCH_CLASS alors je suis pas contre un tuto

    Demain pour 10h c'est possible ?

    J'ai maintenant l'habitude d'utiliser le module Zend_Db pour le mapping et je dois dire que parfois on devient un peu fainéant avec et qu'on oublie "les bases"

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
  •