Bug #18429 Updated: mssql_query() crashes on stored procedure using a cursor on query that contains

From: Date: Fri, 19 Jul 2002 13:56:35 +0000
Subject: Bug #18429 Updated: mssql_query() crashes on stored procedure using a cursor on query that contains
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-14631@lists.php.net to get a copy of this message
 ID:               18429
 Updated by:       hujbanan@yahoo.com
 Reported By:      hujbanan@yahoo.com
 Status:           Open
 Bug Type:         MSSQL related
 Operating System: Win2000
-PHP Version:      4.3.0-dev
+PHP Version:      4.2.2-dev
 New Comment:

I'm very sorry, I have to find PHP version, which do that correctly, so
I've tried all available versions. Latest versions too. In combobox on
'Bugs Report - New' are only 4.1.2, 4.2.0, 4.2.1 and 4CVS-2002-07-19
versions selectable. Because of both latest versions (stable 4.2.2-dev
and 4.3.0-dev) was uploaded to server snaps.php.net 2002/07/19, so I
choose version 4CVS-2002-07-19.

I've tried new update of latest stable version
(http://snaps.php.net/win32/php4-win32-STABLE-latest.zip), and it is
still not work. May be it is caused with my bad configuration of
Apache/PHP. Because of this little misunderstanding, I'm not sure,
which version you are modifying, so I don't know, which one I need to
download. Could you, please, send me, if it is corrected and which
archive I should to download. Thank you for your patient.


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

[2002-07-19 08:52:13] sniper@php.net

please don't change the version to earlier if you already confirmed it
to happen with the LATEST..

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

[2002-07-19 08:24:51] hujbanan@yahoo.com

I have tried new update of stable version, but with the same result, it
doesn't work. I send to you some example of code, which cause troubles,
because I believe, it can help you to debug this problem.

stored procedure:
ALTER PROCEDURE sp_fetch_row @row int = 1 AS
  OPEN GLOBAL rowset
  FETCH ABSOLUTE @row FROM GLOBAL rowset
  CLOSE GLOBAL rowset
  DEALLOCATE GLOBAL rowset
GO

php:
function fetch_row( $link, $query, $row = 1 ) {
  if ( mssql_query( "DECLARE rowset CURSOR GLOBAL SCROLL FOR $query",
$link ) ) {
    if ( $result = mssql_query( "EXEC sp_fetch_row $row", $link ) ) {
      $row = mssql_fetch_assoc( $result );
      mssql_free_result( $result );
    } else
      mssql_query( 'DEALLOCATE GLOBAL rowset', $link );
  }

  return $row;
}

$result = fetch_row( $link, 'SELECT id, name FROM store', 3 );    //
OK
$result = fetch_row( $link, 'SELECT id*2, name FROM store', 3 );  //
fails

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

[2002-07-19 04:55:10] sniper@php.net

version update

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

[2002-07-19 02:16:43] hujbanan@yahoo.com

I use PHP statement mssql_query( "EXEC db_proc 1, 2, 3" ) {query B} to
call stored procedure on MSSQL 2000 server, which produces output using
cursor. Before it, I create global cursor using mssql_query( "DECLARE 
rowset CURSOR GLOBAL SCROLL FOR $query" ) {query A}. I need dynamically
choose executed query, so I can't declare cursor in stored procedure.
Statement {A} creates global cursor which is fetched and dropped in SP
db_proc {B}. When I use as $query SQL command 'SELECT id FROM store',
it works fine. But if I use something like 'SELECT id+1 AS col FROM
store', PHP function mssql_query crashes. However, both of sequences of
SQL queries run without problems in SQL Query Analyzer (SQL 2k).

I found this problem on PHP version 4.2.0 for win32. I try latest
version of PHP from http://snaps.php.net/win32/ (both,
stable
v4.2.2-dev and unstable v4.3.0-dev) but problem persists. I'm using
Apache 1.3.20/PHP 4.2.0 on Win2k advanced server. I have step by step
tryed Apache 2.0.39 with PHP v4.2.1, 4.2.2-dev and 4.3.0-dev, but with
the same result.

Can you tell me, what is wrong? Is it PHP bug or mistake in PHP/Apache
configuration? I used default settings of PHP and Apache, PHP
extensions: dba, mssql & gd.


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


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



Thread (10 messages)

« previous php.bugs (#14631) next »