#41971 [Fbk->Opn]: PDOStatement::fetch and PDOStatement::setFetchMode causes unexpected behavior
ID: 41971
User updated by: joelboh at gmail dot com
Reported By: joelboh at gmail dot com
-Status: Feedback
+Status: Open
Bug Type: PDO related
Operating System: Linux
PHP Version: 5.2.3
New Comment:
No change in the result, $obj is still false with snapshot:
php5.2-200707121230
Previous Comments:
------------------------------------------------------------------------
[2007-07-12 11:42:19] jani@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php5.2-latest.tar.gz
For Windows (zip):
http://snaps.php.net/win32/php5.2-win32-latest.zip
For Windows (installer):
http://snaps.php.net/win32/php5.2-win32-installer-latest.msi
------------------------------------------------------------------------
[2007-07-11 23:20:30] joelboh at gmail dot com
Description:
------------
When using PDOStatement::setFetchMode() with PDO::FETCH_CLASS and
PDO::FETCH_PROPS_LATE a call without arguments to PDOStatement::fetch()
wont work.
Reproduce code:
---------------
<?php
class Person
{
public $parameter;
public function __construct($parameter)
{
$this->parameter = $parameter;
}
}
$db = new PDO("sqlite::memory:");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->exec("CREATE TABLE person (id INTEGER NOT NULL, name
varchar(100))");
$db->exec("INSERT INTO person(id, name) VALUES (1, 'Sven')");
$stmt = $db->query('SELECT * FROM person');
$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'Person',
array(0 => 'Parameter'));
/* To get the expected result you must use:
$stmt->fetch(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE);
Should that really be needed? */
$obj = $stmt->fetch();
print_r($obj);
Expected result:
----------------
Person Object ( [parameter] => Parameter [id] => 1 [name] => Sven )
Actual result:
--------------
$obj is false
If PDO::FETCH_PROPS_LATE is not used in PDOStatement::setFetchMode and
PDOStatement::fetch() is called without arguments you get the expected
result.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=41971&edit=1
Thread (4 messages)