ID:               37026
 Updated by:       [EMAIL PROTECTED]
 Reported By:      kubis at pawouk dot net
-Status:           Open
+Status:           Bogus
 Bug Type:         PDO related
 Operating System: Windows XP
 PHP Version:      5.1.2
 New Comment:

There is something wrong with the classes you use for testing. Short
script that does not use any external sources:

<?php
$dbh = new PDO("pgsql:<conn_attrs_removed>);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->prepare('SELECT 1 AS testcolumn1, 2 AS testcolumn2');
$count1 = $stmt->columnCount();
$res = $stmt->execute();
$count2 = $stmt->columnCount();
var_dump($res);
echo "<br>$count1<br>\n$count2";
?>

produces:

bool(true)
0
2

as it should.


Previous Comments:
------------------------------------------------------------------------

[2006-04-09 19:57:18] kubis at pawouk dot net

there is a typo:
sentence "but with version 5.2.1 it returns false"  should be "but with
version 5.1.2 it returns false"

------------------------------------------------------------------------

[2006-04-09 19:46:53] kubis at pawouk dot net

Description:
------------
PDOStatement::execute() returns false even if the statement has been
executed correctly.

I have tried it with PDO drivers for postgresql packaged with PHP
version 5.1, it returns correctly true, but with version 5.2.1 it
returns false. I ran into this problem while executing unit tests after
an upgrade.

According to manual page should PDOStatement::execute() return true if
the statement has been executed properly or false if not

Reproduce code:
---------------
try {
        $db = DBShop::getInstance();    //
        $stmt = $db->prepare('SELECT 1 AS testcolumn1, 2 AS testcolumn2');
        $count1 = $stmt->columnCount();
        $res = $stmt->execute();
        $count2 = $stmt->columnCount();
} catch (Exception $e){
        $fail[] = self::errorMsg($e, 'Unable to test columnCount()');
        break;
}
$this->assertTrue($res, 'DBStatement::execute() returned false, should
be true');
$this->assertSame(2, $count2, 'DBStatement::columnCount() did not
return expected value');

Expected result:
----------------
no failure in unit test:
- $res is true
- $count2 is 2

Actual result:
--------------
PHPUnit reports "DBStatement::execute() returned false, should be
true", so $res is not true; but $count2 is integer of value 2, thus the
statement has been executed properly


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=37026&edit=1

Reply via email to