Bug #17295 Updated: Bug in while statement
| From: | derick@php.net | Date: | Sat, 13 Jul 2002 22:37:04 +0000 |
| Subject: | Bug #17295 Updated: Bug in while statement | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-14102@lists.php.net to get a copy of this message | ||
ID: 17295
Updated by: derick@php.net
Reported By: pahowes@fair-ware.com
-Status: Feedback
+Status: No Feedback
Bug Type: Scripting Engine problem
Operating System: FreeBSD 4.5
PHP Version: 4.2.0
New Comment:
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Open". Thank you.
Previous Comments:
------------------------------------------------------------------------
[2002-05-17 18:04:51] sniper@php.net
What if you remove that bogus 'die(..)' stuff from the
function? It now dies when there are no more rows.
------------------------------------------------------------------------
[2002-05-17 16:51:06] pahowes@fair-ware.com
I was following one of the samples in the MySQL section of the manual
to extract data from a table, and ran into the following:
If you have a class that handles the database access (I called it
DBManager:
class DBManager
{
var $link;
var $result;
function connect( )
{
$this->link = mysql_pconnect( 'hostname', 'username',
'password'
);
mysql_select_db( 'dbname', $this->link );
}
function query( $q )
{
$this->result = mysql_query( $q, $this->link );
return( $this->result );
}
function next_row( )
{
$row = mysql_fetch_array( $this->result ) or
die( "error: " . mysql_error( ) );
return( $row );
}
};
The sample in the documentation works fine:
$link = mysql_connect( 'hostname', 'username', 'password' );
mysql_select_db( 'dbname', $link );
$q = "SELECT * FROM user";
$result = mysql_query( $q );
while( $row = mysql_fetch_array( $result ) )
{
echo $row['username'];
}
When replaced with the object above:
$db = new DBManager( )
$db->connect( );
$q = "SELECT * FROM user";
$result = $db->query( $q );
while( $row = $db->next_row( ) )
{
echo $row['username'];
}
...Fetching the next row will fail with no error message from MySQL
(the return value from the call to "mysql_error" is empty.)
I think this is a bug in the scripting engine itself. Using a function
call in the while condition works fine, but using a class-function call
causes an error. If the "$row = $db->next_row( )" statement appears
anywhere else, it will work fine.
--
Paul A. Howes
pahowes@fair-ware.com
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=17295&edit=1