#28068 [Opn->Bgs]: mssql_num_rows() is returning an invalid handle

From: Date: Tue, 27 Apr 2004 22:13:55 +0000
Subject: #28068 [Opn->Bgs]: mssql_num_rows() is returning an invalid handle
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-58908@lists.php.net to get a copy of this message
ID: 28068 Updated by: fmk@php.net 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] fmk@php.net 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] fmk@php.net 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] derick@php.net 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

« previous php.bugs (#58908) next »