ID: 28068
Updated by: [EMAIL PROTECTED]
Reported By: oooacooo at yahoo dot com
-Status: Open
+Status: Bogus
Bug Type: MSSQL related
Operating System: Windows 2K Server; Apache 2.0.45
PHP Version: 4.3.4
Assigned To: fmk
New Comment:
When mssql_query() returns true it means that the SQL statement(s) was
executed without any errors and they did not return any data (result
sets).
You can't pass a true value to mssql_num_rows() it requires a resource
handle. You can check if the returned value is a resource valye with
this code:
$rs = mssql_query(....);
if (is_resource($rs)) {
// continue
}
Previous Comments:
------------------------------------------------------------------------
[2004-04-27 21:42:19] oooacooo at yahoo dot com
I tried checking the result of mssql_query and it is returning true.
When I pass it to mssql_num_rows() it states that it is not a valid MS
SQL-result resource. I am at a loss on how to get around this.
------------------------------------------------------------------------
[2004-04-23 21:11:23] [EMAIL PROTECTED]
When an invalid resource handle is passed to mssql_num_rows() it is
supposed to throw an error. Your problem is that you are not checking
the resource handle returned by the query function before calling
mssql_num_rows()
mssql_query() can return true, false or a resource handle and the value
must be checked before calling any other mssql_* functions to avoid
error messages.
You can check why the call to mssql_query returns different values for
two different versions of PHP, but I doubt that it has anything to do
with PHP.
------------------------------------------------------------------------
[2004-04-23 19:26:44] oooacooo at yahoo dot com
The content of the stored procedure is irrelevant because if you can
see from my description it worked with build 4.3.2 and after installing
4.3.4 it failed. I then relaced php_mssql.dll with the one from the
4.3.2 build and it worked again.
If a rewrite of my application or the stored procedure to fix the issue
is your work around that is fine, but build 4.3.4 still implemented a
backward compatablity issue.
------------------------------------------------------------------------
[2004-04-20 23:38:45] [EMAIL PROTECTED]
The result from mssql_query() is not a valid resource. The function
might just return TRUE if the storred procedure was executed with
success. Not having access to the stored procedure makes it difficult
to tell why this is happening.
You should check the result with is_resource() before calling
mssql_num_rows() (and any other mssql_function for that matter) if you
want to avoid this error message, or make sure your storred procedure
returns a result set (even with 0 rows) each time.
------------------------------------------------------------------------
[2004-04-20 09:11:50] [EMAIL PROTECTED]
Assigning to the maintainer, as this is obviously wrong (and BC
breaking) behavior.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/28068
--
Edit this bug report at http://bugs.php.net/?id=28068&edit=1