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

From: Date: Tue, 20 Apr 2004 21:38:46 +0000
Subject: #28068 [Asn->Bgs]: mssql_num_rows() is returning an invalid handle
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-58476@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: Assigned +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: 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. Previous Comments: ------------------------------------------------------------------------ [2004-04-20 09:11:50] derick@php.net Assigning to the maintainer, as this is obviously wrong (and BC breaking) behavior. ------------------------------------------------------------------------ [2004-04-19 22:01:58] oooacooo at yahoo dot com Description: ------------ When using mssql_execute() with PHP version 4.3.2 mssql_num_rows() will return 0, when no records are returned from a stored procedure. When using version 4.3.4 and above mssql_num_rows() will return "supplied argument is not a valid MS SQL-result resource" I tested this by running the code successfully with the php_mssql.dll which ships with 4.3.2 and then swapped php_mssql.dll with the one that ships with 4.3.4 and restarted Apache. Reproduce code: --------------- $validEpisode = mssql_query("spValidateEpisodeDate " . $AccountID . ",'" . $inputVisitDate . "'",$db); if(mssql_num_rows($validEpisode) > 0) { $row = mssql_fetch_object($validEpisode); if($row->Episode_ID == "") $errorMsg = "There is no episode for this account that covers the visit date entered.<br>" . $errorMsg; else $EpisodeID = $row->Episode_ID; } Expected result: ---------------- If no records are found I would expect "if(mssql_num_rows($validEpisode) > 0)" to return true. Actual result: -------------- "if(mssql_num_rows($validEpisode) > 0)" throws an error "supplied argument is not a valid MS SQL-result resource" ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=28068&edit=1

« previous php.bugs (#58476) next »