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