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 :

setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute [PDO]


Sujet :

PHP & Base de données

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute
    Bonjour,

    ayant ce message d'erreur :
    Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. in C:\projets\ticket_rawsrc\vendor\rawsrc\PDOPlusPlus\PDOPlusPlus.php:722 Stack trace: #0 C:\projets\ticket_rawsrc\vendor\rawsrc\PDOPlusPlus\PDOPlusPlus.php(722): PDO->exec('CREATE TEMPORAR...') #1 C:\projets\ticket_rawsrc\model\license\table\User.php(107): rawsrc\PDOPlusPlus\PDOPlusPlus->execute('CREATE TEMPORAR...') #2 C:\projets\ticket_rawsrc\model\CSVImport.php(130): ticket_rawsrc\model\license\table\User->save('Martine', 'Vesian', 'martine.vesian@...', 'SCHNEIDER ELECT...', 105017, 'Schneider Digit...', '', 0, 41, 1) #3 C:\projets\ticket_rawsrc\controller\CSVImportController.php(221): ticket_rawsrc\model\CSVImport::putInDBLicense(Object(ticket_rawsrc\model\license\table\Application), Object(ticket_rawsrc\model\Country), Object(ticket_rawsrc\model\license\table\Location), Object(ticket_rawsrc\model\license\table\User), Object(ticket_rawsrc\model\license\table\User), Object(ticket_rawsrc\model\license\table\LicenseModel)) #4 C:\projets\ticket_rawsrc\index.php(94): ticket_rawsrc\controller\CSVImportController->invoke(Array) #5 {main} thrown in C:\projets\ticket_rawsrc\vendor\rawsrc\PDOPlusPlus\PDOPlusPlus.php on line 722
    , j'ai modifié la page de connection
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     $params = $pdo_params + [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                PDO::ATTR_EMULATE_PREPARES   => false,
                PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true
            ];
    J'ai rajouté la ligne 5. Mais l'erreur reste. Avez-vous une idée ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Salut,
    on peux voir le code ?

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    En fin de matinée...(A la bourre tout de suite)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    J'ai un peu joué les prolongations et j'ai un peu creusé. J'ai modifié le code mais l'erreur reste. Le message d'erreur est similaire mais a changé vu le changement du code.

    Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. in C:\projets\ticket_rawsrc\vendor\rawsrc\PDOPlusPlus\PDOPlusPlus.php:723 Stack trace: #0 C:\projets\ticket_rawsrc\vendor\rawsrc\PDOPlusPlus\PDOPlusPlus.php(723): PDO->exec('UPDATE `user`\r\n...') #1 C:\projets\ticket_rawsrc\vendor\rawsrc\PDOPlusPlus\PDOPlusPlus.php(697): rawsrc\PDOPlusPlus\PDOPlusPlus->execute('UPDATE `user`\r\n...') #2 C:\projets\ticket_rawsrc\model\license\table\User.php(115): rawsrc\PDOPlusPlus\PDOPlusPlus->update('UPDATE `user`\r\n...') #3 C:\projets\ticket_rawsrc\model\CSVImport.php(130): ticket_rawsrc\model\license\table\User->save('Martine', 'Vesian', 'martine.vesian@...', 'SCHNEIDER ELECT...', 105017, 'Schneider Digit...', '', 'Oliver.Borne@sc...', 41, 1) #4 C:\projets\ticket_rawsrc\controller\CSVImportController.php(221): ticket_rawsrc\model\CSVImport::putInDBLicense(Object(ticket_rawsrc\model\license\table\Application), Object(ticket_rawsrc\model\Country), Object(ticket_rawsrc\model\license\table\Location), Object(ticket_rawsrc\model\license\table\User), Object(ticket_rawsrc\model\license\table\User), Object(ticket_rawsrc\model\license\table\LicenseModel)) #5 C:\projets\ticket_rawsrc\index.php(94): ticket_rawsrc\controller\CSVImportController->invoke(Array) #6 {main} thrown in C:\projets\ticket_rawsrc\vendor\rawsrc\PDOPlusPlus\PDOPlusPlus.php on line 723
    Code php : 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
    public function save( string $firstname, string $lastname, string $email, string $company = null, int $sesa = null,
                              string $buunitname = null, string $location = null,   string $manager_email = null )
        {
         $ppp = new PDOPlusPlus();
         $sql = <<<sql2
    SELECT user_key FROM `user` WHERE email = {$ppp($manager_email)};
    sql2;
                $manager_key=$ppp->select($sql);
     
     
                $sql = <<<sql
    UPDATE `user`
    SET lastname = {$ppp($lastname)},firstname ={$ppp($firstname)} ,company = {$ppp($company)},
                buunitname = {$ppp($buunitname)},location = {$ppp($location)}, manager_key= {$ppp($manager_key)}
     where email={$ppp($email)};
    sql;
                $exec = $ppp->update($sql);
    }
    Pour l'exécution des requêtes, j'utilise l'excellente classe de rawsrc PDOPlusPlus.
    La seule chose à savoir est que le retour de la méthode select (ligne 8) est le retour d'un fetchAll.
    Et j'ai introduit dans la connexion l'attribut mentionné dans le message d'erreur (car mon SGBD est bien MySql) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     $params = $pdo_params + [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                PDO::ATTR_EMULATE_PREPARES   => false,
                PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true
            ];
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 382
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    J'ai fini par résoudre le problème mais compliqué à expliquer comment (surtout que j'ai oublié )
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Set the "date.timezone" setting in php.ini
    Par jeanpierrea dans le forum Débuter
    Réponses: 6
    Dernier message: 23/07/2018, 14h19
  2. [OL-MAC 2011] Setting the Default Signature
    Par Upx_man dans le forum Outlook
    Réponses: 0
    Dernier message: 10/01/2013, 11h11
  3. Réponses: 1
    Dernier message: 22/04/2010, 12h24
  4. Réponses: 30
    Dernier message: 12/01/2009, 09h08
  5. Réponses: 10
    Dernier message: 23/05/2006, 16h42

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