ID: 17593
Comment by: adimuraru at rdslink dot ro
Reported By: alexp at mail dot lv
Status: Closed
Bug Type: MSSQL related
Operating System: Win2k prof. SP2
PHP Version: 4.2.1
New Comment:

This error occurs when you try to send a new command to the server
before all the results of the previous command on the same connection
have been completely processed. A connection in mssql library used in
php is single-threaded and synchronous; it can handle only one request
to the server at a time.

So, if you want to pass multiple query to a database make a single
batch query(with multiple queries):
$RS=mssql_query(select * from table1 select * from tabel2);
and use mysql_next_result to fetch all records.

After use result set make sure you deallocate resources with
mssql_free_result($rs) before make another request to sql server in the
same script


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

[2002-12-03 12:07:05] [email]fmkphp.net[/email]

In PHP 4.3.0 you will be able to fix this problem by calling
mssql_free_result($r1); after the first statement.

When you use if statements MSSQL server seams to hold the result
(blocing for other statements) until the result is released.

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

[2002-06-04 06:38:50] alexp at mail dot lv

It seems that mssql_query fails to get results properly after executing
some arbitrary queries.

<?php
mssql_connect(".","login","passwd");
$r1=mssql_query("if object_id('tempdb..#abc') is not null drop table
#abc");
$r2=mssql_query("select * from sometable");
$r3=mssql_query("select * from othertable");
?>

...causes..


Warning: MS SQL error: Attempt to initiate a new SQL Server operation
with results pending. (severity 7) in d:\htdocs\t\bug.php on line 4

Warning: MS SQL: Query failed in d:\htdocs\t\bug.php on line 4

Warning: MS SQL error: Attempt to initiate a new SQL Server operation
with results pending. (severity 7) in d:\htdocs\t\bug.php on line 5

Warning: MS SQL: Query failed in d:\htdocs\t\bug.php on line 5
----

First query is correct and executes properly (checked with SQL server
profiler running). But 2nd,3rd..n-th fail to execute. Though if I
comment out 1st one, others work ok. Another dirty hack to avoid these
errors is to embed entire query in exec(""). But then temporary #tables
won't be available in next queries.

I've found another similar bug in database, #9379. Using sql variables
in query causes same weird behaviour...

In a few days I will test this script on Linux/apache/php/freedts
connecting to same sql database and see if it works.

Any ideas?

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


--
Edit this bug report at [url]http://bugs.php.net/?id=17593&edit=1[/url]