#34964 [Opn->Bgs]: using PDO::query() more than once
| From: | helly@php.net | Date: | Mon, 24 Oct 2005 08:32:22 +0000 |
| Subject: | #34964 [Opn->Bgs]: using PDO::query() more than once | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-86966@lists.php.net to get a copy of this message | ||
ID: 34964
Updated by: helly@php.net
Reported By: akorthaus at web dot de
-Status: Open
+Status: Bogus
Bug Type: PDO related
-Operating System: all
+Operating System: *
-PHP Version: 5.0.5
+PHP Version: 5.*
-Assigned To:
+Assigned To: wez
New Comment:
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
The MySql driver uses the old mysql protocol which is not capable of
this. We need someone to write a mysqlI driver and may want to find a
way to issue an error if used like this.
Previous Comments:
------------------------------------------------------------------------
[2005-10-24 04:05:06] akorthaus at web dot de
that's how this problem could also look like:
<?php
$db = new PDO('...');
$stmt = $db->query('SELECT * FROM table1');
var_dump($stmt);
$stmt = $db->query('SELECT * FROM table2');
var_dump($stmt);
$stmt = $db->query('SELECT * FROM table3');
var_dump($stmt);
?>
output:
-------------------------
object(PDOStatement)#2 ...
bool(false)
object(PDOStatement)#2 ...
Only if I do this:
<?php
$db = new PDO('...');
$stmt = $db->query('SELECT * FROM table1');
var_dump($stmt);
$stmt = NULL;
$stmt = $db->query('SELECT * FROM table2');
var_dump($stmt);
$stmt = NULL;
$stmt = $db->query('SELECT * FROM table3');
var_dump($stmt);
$stmt = NULL;
?>
output:
-------------------------
object(PDOStatement)#2 ...
object(PDOStatement)#2 ...
object(PDOStatement)#2 ...
This seems to work. But should this really be the way to go? I hope
it's a but ;-)
------------------------------------------------------------------------
[2005-10-24 03:52:50] akorthaus at web dot de
Description:
------------
If I want to use PDO::query() more than one time in a script, I have to
set the last PDOStatement to NULL, before I can use the second query.
Only If I add:
$stmt1 = NULL;
before
$stmt2 = $db->query ...
in the example below, I can work with the second query.
But - how can I work with two statments at the same time? I often have
to do this! I don't understand it because I use two different variables
for the statements here.
I have used the pdo_mysql driver (MySQL 4.1.14), pdo and pdo_mysql were
compiled from latest CVS.
Reproduce code:
---------------
<?php
$db = new PDO('...');
$stmt1 = $db->query('SELECT * FROM table1');
var_dump($stmt1);
$stmt2 = $db->query('SELECT * FROM table2');
var_dump($stmt1);
?>
Expected result:
----------------
object(PDOStatement)#2 ...
object(PDOStatement)#2 ...
Actual result:
--------------
object(PDOStatement)#2 ...
bool(false)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=34964&edit=1