IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

probleme PDO et CLOB [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 10
    Points
    10
    Par défaut probleme PDO et CLOB
    Bonjour,

    Je rencontre un probleme lorsque j effectue une requete sur une base oracle. Je fais un select sur un champ contenant des clobs et je n'arrive pas à lire l'ensemble des resultats que la requete devrait me renvoyer. Voici le code

    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
    18
    19
    20
    21
    22
    23
    24
     
    // LOGIN SQL
      define ('NOM', 'xxx');
     
    // MOT DE PASSE SQL
      define ('PASSE', 'xxx');
    $dsn = 'oci:dbname=//xxx';
    $connexion = new PDO ($dsn, NOM, PASSE);
     
     
    $sql = "SELECT A.OBJET FROM TBL_ACTUALITE A WHERE (( DEST = 1) OR ( DEST = '999999')) ";
     
    $stmt = $connexion->prepare($sql);
    $stmt->execute();
    $stmt->bindColumn(1,$lob, PDO::PARAM_LOB);
     
    while ($toto=$stmt->fetch(PDO::FETCH_BOUND))
    {
    echo '<br/>';
    echo $i;
    echo '<br/>';
    echo stream_get_contents($lob);
    $i=$i+1;
    }
    lorsque je lance ce script, je récupère les 15 premiers résultats (parfois variable) au lieu d'une centaine, puis le script s'arete. Je ne sais pas ce qui m'echappe, y a t'il des limitations de buffer ou autre chose au niveau de php ou oracle ?

    Merci

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pourquoi faire stream_get_contents ?

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Salut stealth35

    Merci de te pencher sur le sujet

    J utilise stream_get_contents car le champs objet est un clob et que je recupère à la sortie un stream (ressource id=4 de type stream). J ai essayé aussi fpassthru et je ne suis pas contre essayer d'autres choses car je suis bloqué.
    Avec fpassthru comme avec stream_get_contents le texte est bien affiché mais il me manque beaucoup de lignes.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par edennnnn Voir le message
    Salut stealth35

    Merci de te pencher sur le sujet

    J utilise stream_get_contents car le champs objet est un clob et que je recupère à la sortie un stream (ressource id=4 de type stream). J ai essayé aussi fpassthru et je ne suis pas contre essayer d'autres choses car je suis bloqué.
    Avec fpassthru comme avec stream_get_contents le texte est bien affiché mais il me manque beaucoup de lignes.
    oki, si tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print_r(stream_get_meta_data($lob));
    y'a quoi comme info ?

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    voila le resultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Array ( [stream_type] => pdo_oci blob stream [mode] => r+b [unread_bytes] => 0 [seekable] => [timed_out] => [blocked] => 1 [eof] => )

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    et voici comment s'arete la boucle qui cette fois va jusqu'a 47 resultats:

    Array ( [stream_type] => pdo_oci blob stream [mode] => r+b [unread_bytes] => 0 [seekable] => [timed_out] => [blocked] => 1 [eof] => )
    44
    Array ( [stream_type] => pdo_oci blob stream [mode] => r+b [unread_bytes] => 0 [seekable] => [timed_out] => [blocked] => 1 [eof] => )
    45
    Array ( [stream_type] => pdo_oci blob stream [mode] => r+b [unread_bytes] => 0 [seekable] => [timed_out] => [blocked] => 1 [eof] => )
    46
    Array ( [stream_type] => pdo_oci blob stream [mode] => r+b [unread_bytes] => 0 [seekable] => [timed_out] => [blocked] => 1 [eof] => )
    47
    Array ( [stream_type] => pdo_oci blob stream

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    arf mince y'a pas tout met un var_dump au lieu d'un print_r

  8. #8
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    je te mets les dernieres lignes

    62
    array(7) { ["stream_type"]=> string(19) "pdo_oci blob stream" ["mode"]=> string(3) "r+b" ["unread_bytes"]=> int(0) ["seekable"]=> bool(false) ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) }
    63
    array(7) { ["stream_type"]=> string(19) "pdo_oci blob stream" ["mode"]=> string(3) "r+b" ["unread_bytes"]=> int(0) ["seekable"]=> bool(false) ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) }
    64
    array(7) { ["stream_type"]=> string(19) "pdo_oci blob stream" ["

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    ta bien activer les erreurs pour PDO et pour PHP ?

  10. #10
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    pour php oui (notice, warning...) pour les erreurs pdo il y a autre chose a activer ?

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par edennnnn Voir le message
    pour php oui (notice, warning...) pour les erreurs pdo il y a autre chose a activer ?
    pour php mettre bien en E_ALL | E_STRICT
    pour PDO c'est ici : http://php.net/manual/fr/pdo.error-handling.php

  12. #12
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    le phpinfo() je ne vois rien dans pdo_oci8 ca m'interpelle, je vais voir aussi pour mettre les erreurs pdo

    (c'est la source, je n arrive pas a l afficher comme un tableau)

    <h2><a name="module_PDO">PDO</a></h2>
    <table border="0" cellpadding="3" width="600">
    <tr class="h"><th>PDO support</th><th>enabled</th></tr>

    <tr><td class="e">PDO drivers </td><td class="v">mysql, oci, odbc, sqlite </td></tr>
    </table><br />
    <h2><a name="module_pdo_mysql">pdo_mysql</a></h2>
    <table border="0" cellpadding="3" width="600">
    <tr class="h"><th>PDO Driver for MySQL, client library version</th><th>5.0.77</th></tr>
    </table><br />
    <h2><a name="module_PDO_OCI">PDO_OCI</a></h2>
    <table border="0" cellpadding="3" width="600">
    <tr class="h"><th>PDO Driver for OCI 8 and later</th><th>enabled</th></tr>

    </table><br />

  13. #13
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    ok j ai donc ajouté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $connexion->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
    pour les erreurs pdo

    j'obtiens la meme chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    63
    array(7) { ["stream_type"]=> string(19) "pdo_oci blob stream" ["mode"]=> string(3) "r+b" ["unread_bytes"]=> int(0) ["seekable"]=> bool(false) ["timed_out"]=> bool(false) ["blocked"]=> bool(true) ["eof"]=> bool(false) }
    64
    array(7) { ["stream_type"]=> string(19) "pdo_oci blob stream" ["

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    ressaye de les afficher avec stream

  15. #15
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    while ($toto=$stmt->fetch(PDO::FETCH_BOUND))
    {
    echo '<br/>';
    echo $i;
    echo '<br/>';
    echo stream_get_contents($lob);
    //var_dump(stream_get_meta_data($lob));
    $i=$i+1;
    }
    echo '********************************************************************************************************';
    resultat : 63e et derniere ligne affiché : (le echo en sorti de boucle n est pas la)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    est selectionnee seul le nom et l'adresse du gestionnaire principal est pris en compte avec le seuil du solde moyen
    \r\n\r\nxxxxxxxxxxxxx\r\n\r\n\r\n

  16. #16
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    etrange
    y'a du HTML dans tes données ?

  17. #17
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    oui il y en a, je n'ai pas la maitrise la dessus (je recupere de l existant)

    je vais manger, n'hesite pas à laisser tout ce qui te passe par la tete à tester ou verifier, je suis en manque d'inspiration donc j essayerai.

    A toute si tu es encore dans les parages et encore merci pour ton aide.

  18. #18
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par edennnnn Voir le message
    oui il y en a, je n'ai pas la maitrise la dessus (je recupere de l existant)
    oki ca se trouve y'a un balise qui englobe le reste

    fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo htmlspecialchars(stream_get_contents($lob));

  19. #19
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    Voila le resultat toujours la derniere ligne (je vais manger comme dit au dessus)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    63
    Le module Parametres - <b>'Poste ' vient d'etre modifie</b> afin de prendre en compte la denomination du poste. <br>Une zone supplementaire sous la forme d'une liste deroulante a ete rajoutee et permet de selectionner 4 options:<br>\r\n<ul>\r\n<li> '-' qui correspond a pas de denomination</li>\r\n<li>UNIFIEE</li>\r\n<li>NANCES</li>\r\n<li>ERALE</li></ul>\r\nLes donnees par defauts ont ete enregistrees dans la base  a modifier<br>\r\nCette information est desormais reprise dans les differents etats emis dans l'application<br><br>\r\n\r\nLa <b>requete n?2</b> dans le module Export vient d'etre <b>modifiee</b><br>En effet le nombre de fiches retourne pouvait etre fausse quand il y avai. <br> Un. L'objectif de cette requete est de fournir un ensemble de fiches repondant aux criteresil. Desormais si une fiche est selectionnee seul le nom et l'adresse du <br>\r\n\r\n\r\n\r\n\r\n

  20. #20
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    d'autres idées quelqu'un ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] Probleme PDO driver
    Par yantoo dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 13/04/2010, 14h15
  2. [PDO] Probleme PDO :-°
    Par toxicity1985 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/03/2009, 15h58
  3. [PDO] Probleme avec PDO / PHP5
    Par anjin dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/08/2007, 07h33
  4. Réponses: 9
    Dernier message: 20/06/2007, 17h34
  5. Probleme avec l'objet PDO en PHP
    Par krovomi dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 03/05/2006, 12h18

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