Hi Michael,

I'm running on Windows XP and using MSSQL server 7.0 and 2000 both with
the latest service packs.

PHP 4.3.5-dev (cli) (built: Nov  4 2003 16:23:54)
Copyright (c) 1997-2003 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2003 Zend Technologies

ntwdblib is 2000.2.8.0

- Frank

> Frank,
> 
> Hummm... I am seeing the crash on my development machine.  Using PHP
> 4.3.4 recompiled with the most recent php_mssql.c (1.86.2.26) this code
> fails for me exactly as descibed in the bug report when run with the
> CLI under Windows 2000 Professional.  I'm running SQL Server 2000 SP3
> with version 8.00.194 of ntwdblib.dll.  What is your configuration?
> 
> Michael
> 
> --- "Frank M. Kromann" <[EMAIL PROTECTED]> wrote:
> > This does not fix the problem.
> > 
> > mssql_query is designed to stop fetching for each result. Use
> > mssql_next_result() to move the internal pointer to the nex result
> > and
> > process the data.
> > 
> > I have tested the code provided with the bug report and it works as I
> > expect (no crash).
> > 
> > - Frank
> > 
> > > I believe the problem here is in how mssql_query handles result
> > sets
> > > that have multiple results returned, but none with rows (such as in
> > > this bug where there are multiple commands executed and multiple
> > errors
> > > returned).  In the php_mssql.c for PHP 4.3.4 the block at line 1145
> > > reads:
> > > 
> > >   while ((num_fields = dbnumcols(mssql_ptr->link)) <= 0 && retvalue
> > ==
> > > SUCCEED) {
> > >           retvalue = dbresults(mssql_ptr->link);
> > >   }
> > > 
> > > According to Microsoft
> > >
> > (http://msdn.microsoft.com/library/en-us/dblibc/dbc_pdc04e_52sz.asp),
> > > however:
> > > 
> > >   "You must call dbresults until it returns NO_MORE_RESULTS, or 
> > >   any continued use of the DBPROCESS causes the DB-Library error
> > >   10038 'Results Pending'."
> > > 
> > > As this code in php_mssql.c currently stands it stops looping the
> > empty
> > > result sets too early becuase it's looking for SUCCEED instead of
> > > NO_MORE_RESULTS.  Changing this code to:
> > > 
> > >   while ((num_fields = dbnumcols(mssql_ptr->link)) <= 0 && retvalue
> > !=
> > > NO_MORE_RESULTS) {
> > >           retvalue = dbresults(mssql_ptr->link);
> > >   }
> > > 
> > > causes both SQL Server error messages generated by the sample query
> > in
> > > the bug report to be correctly displayed and eliminates the fault.
> > > 
> > > Michael Sisolak
> > > [EMAIL PROTECTED]
> > > 
> > > 
> > > __________________________________
> > > Do you Yahoo!?
> > > Free Pop-Up Blocker - Get it now
> > > http://companion.yahoo.com/
> > > 
> > > -- 
> > > PHP Internals - PHP Runtime Development Mailing List
> > > To unsubscribe, visit: http://www.php.net/unsub.php
> > > 
> > 
> > 
> > 
> 
> 
> __________________________________
> Do you Yahoo!?
> Free Pop-Up Blocker - Get it now
> http://companion.yahoo.com/
> 

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to