#39527 [Opn]: Can't iterate over a PDOStatement object using foreach()
| From: | jpokotilow at tuneteller dot com | Date: | Thu, 16 Nov 2006 05:09:03 +0000 |
| Subject: | #39527 [Opn]: Can't iterate over a PDOStatement object using foreach() | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-105051@lists.php.net to get a copy of this message | ||
ID: 39527
User updated by: jpokotilow at tuneteller dot com
Reported By: jpokotilow at tuneteller dot com
Status: Open
Bug Type: PDO related
Operating System: Mac OS X 10.4.8
PHP Version: 5.2.0
New Comment:
I feel that I neglected to mention one important point, which
is that I *can* iterate over the PDOStatement object prior to
returning it from the class method. The object only becomes
dysfunctional when it's operated on outside of the class
method in question.
Previous Comments:
------------------------------------------------------------------------
[2006-11-16 05:03:02] jpokotilow at tuneteller dot com
Description:
------------
I invoke PDO::query() twice, with two different valid
SQL queries from within a class method. (Note: I make sure to
invoke fetchAll() on the PDOStatement object returned by the
first invocation before invoking PDO::query() a second time.
Update: I just found out that if I set the first PDOStatement
object to NULL, everything works as intended. HOWEVER,
invoking fetchAll() should suffice, should it not?) I return
the PDOStatement object generated by the second PDO::query()
invocation. I'm unable to iterate over the object with a
foreach() construct even though there ought to be results.
Invoking fetchAll() on the object returns an empty array.
If I set the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute to
true, I don't have this problem, but I'm pretty sure I
shouldn't have it either way.
Reproduce code:
---------------
http://pastebin.com/825493
Expected result:
----------------
I expect to be able to iterate over rows associated with
$broken_iterable_results ... or I would expect for
$broken_iterable_results->fetchAll() to return rows associated
with the PDOStatement object. At the very least, I expect for
some error to be generated if I'm doing anything wrong.
Note: With PDO::ERRMODE_EXCEPTION set to true, there is an
exception thrown.
Actual result:
--------------
Iterating over $broken_iterable_results results does nothing.
Invoking $broken_iterable_results->fetchAll() returns an
empty array.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=39527&edit=1