Edit report at https://bugs.php.net/bug.php?id=64522&edit=1

 ID:                 64522
 User updated by:    capile at tecnodz dot com
 Reported by:        capile at tecnodz dot com
 Summary:            After first query to MSSQL (DBLIB) all the other
                     queries return null values
 Status:             Open
 Type:               Bug
 Package:            PDO related
 Operating System:   Ubuntu Linux
 PHP Version:        5.4.13
 Block user comment: N
 Private report:     N

 New Comment:

using $statement = null; would make it impossible to use transactions and some 
stored procedures.

This was introduced back in late 
2011(https://github.com/php/php-src/commit/3a069e814fe01b36812b5c768dd52ccdea3ed098)
 but only on PHP 5.4+ (5.3- worked as expected).

I compiled PHP 5.4.13 with the pull request applied and it worked as expected.


Previous Comments:
------------------------------------------------------------------------
[2013-05-29 03:42:49] ssuffic...@php.net

I installed Sybase Adaptive Server and was able to reproduce. A workaround is 
to 
do a $statement=null and then reuse the $statement variable. This calls the 
statement destructor in addition to the cursorCloser(). 

This may be something new to the PDO core. From what I can see on git, no 
changes 
have been made to pdo_dblib since it was last working. I will continue to look 
into this.

------------------------------------------------------------------------
[2013-05-29 02:38:18] ssuffic...@php.net

The issue may be the way the cursor closer is implemented. It frees the column 
metadata but I can't find where it is reallocated for the next statement. This 
may be allocated in PDO core. I remember writing tests, but they did not call 
"$stmt->closeCursor();". Does your script work without the closeCursor()?

I have no way to test anymore since I do not have an SQL/Sybase server to 
connect to. :(

------------------------------------------------------------------------
[2013-05-28 17:19:11] mneyman at yesco dot com

Also tested on Ubuntu 12.04 with PHP 5.4.15 and it does not work

------------------------------------------------------------------------
[2013-03-26 18:44:16] capile at tecnodz dot com

Downgraded PHP on Ubuntu 12.10 to 5.3.10 and now it works. I also noticed that 
cursors are closed at each statement/query/exec.

------------------------------------------------------------------------
[2013-03-26 18:24:57] capile at tecnodz dot com

Description:
------------
After first statement/query/exec (successful or not) all the other statements 
return null as a result. There's nothing relevant in the 
PDOStatement::errorInfo().

Occurs no matter if the statement cursor was closed or not.

Tested on:
* Ubuntu 12.10 with both PHP 5.4.6 and 5.4.13 (doesn't work)
* Ubuntu 13.04 with PHP 5.4.9 (doesn't work)
* Ubuntu 12.04 with PHP 5.3.10 (works)

All the installations were made with apt-get (PHP 5.4.13 from 
http://ppa.launchpad.net/ondrej/php5/ubuntu).

All of them use the PDO version 1.0.4dev (got with `php --re pdo`)

Test script:
---------------
$pdo=new PDO('dblib:host=db;dbname=admin;charset=UTF-8',$username,$password);

$statement=$pdo->query('select 1+1 as result');
print_r($statement->fetchAll());
$statement->closeCursor();

$statement=$pdo->query('select 1+1 as result');
print_r($statement->fetchAll());



Expected result:
----------------
Array
(
    [0] => Array
        (
            [result] => 2
            [0] => 2
        )

)
Array
(
    [0] => Array
        (
            [result] => 2
            [0] => 2
        )

)

Actual result:
--------------
Array
(
    [0] => Array
        (
            [result] => 2
            [0] => 2
        )

)
Array
(
)


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



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

Reply via email to