Re: [PDO] Cannot execute queries while other unbuffered queries are active

[email protected] (Roberto Mansfield)
Newsgroups php.db
Message-ID <[email protected]>
Have you tried using closeCursor() after your query is finished?
-Roberto


Fabian Golle wrote:
> Hey,
> 
> I'm using a PDO-MySQL in a class of my Accounting-Framework. The problem: if
> I call my function query(), see below, multiple times, I get the error:
> 
>  
> 
> Array ( [0] => HY000 [1] => 2014 [2] => 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. ) 1
> 
>  
> 
> protected function query($query) {
> 
>       try {
> 
>             if (preg_match("@^select@is", $query)) {
> 
>                   $sth = $this->link->prepare($query) or
> die(print_r($this->link->errorInfo()));
> 
>                   $sth->execute();
> 
>                         
> 
>                   // Get RowCount
> 
>                   $rc = 0;
> 
>                   while($count = $sth->fetch(PDO::FETCH_ASSOC)) $rc++;
> 
>                   $this->count[(string)$sth] = $rc;
> 
>                   $sth->execute();
> 
>                   return $sth;
> 
>             } else {
> 
>                   $this->link->query($query);
> 
>                   return true;
> 
>             }
> 
>       } catch (Exception $e) {
> 
>             $dbh->rollBack();
> 
>             echo "DATABASE OPERATION FAILED: " . $e->getMessage();
> 
>             exit;
> 
>       }
> 
> }
> 
>  
> 
> The Solution described in the official manual is: 
> 
>  
> 
> $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
> 
>  
> 
> My Connection function (which also includes the solution):
> 
>  
> 
> private function connect() {
> 
>       $this->link = new
> PDO('mysql:host=localhost;dbname=micronax_mymicronax', "mymicronax",
> "l{7kD01eG-B[");
> 
>       $this->link->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
> 
>       return true;
> 
> }
> 
>  
> 
> $link is defined as: protected $link = false;
> 
>  
> 
>  
> 
> But I still get the damn error-message. What's going wrong here?
> 
>  
> 
> Other possibilities, ex. Adding the MYSQL_ATTR_USE_BUFFERED_QUERY to "new
> PDO()" or adding it to "prepare($query)" doesn't show affect.
> 
>  
> 
> Please help me,
> 
>  
> 
> Greetings from Germany and happy easter,
> 
>  
> 
> --
> 
> Fabian Golle
> 
> Salisweg 22e | 63454 Hanau
> 
> Tel.: +49 6181 26644
> 
> Mobil: +49 172 8183994
> 
> Web: http://www.micronax.de
> 
> Email: [email protected]
> 
> (c) Micronax Systems 2007. All rights reserved
> 
>  
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.