Bug #18429 Updated: mssql_query() crashes on stored procedure using a cursor on query that contains
| From: | sniper@php.net | Date: | Fri, 19 Jul 2002 16:10:57 +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-14640@lists.php.net to get a copy of this message | ||
ID: 18429
Updated by: sniper@php.net
Reported By: hujbanan@yahoo.com
Status: Open
Bug Type: MSSQL related
Operating System: Win2000
-PHP Version: 4.2.2-dev
+PHP Version: 4.3.0-dev
New Comment:
This is the snapshot for 4.3.0-dev:
http://snaps.php.net/win32/php4-win32-latest.zip
DO NOT REPLY unless you have _NEW_ information.
DO NOT TOUCH the version anymore!!!!
Also note that Apache2 is NOT stable for ANY use yet.
Use Apache 1.3.26 which is proven to actually work (with PHP)
Previous Comments:
------------------------------------------------------------------------
[2002-07-19 09:56:33] hujbanan@yahoo.com
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.
------------------------------------------------------------------------
[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