ID: 17295
Updated by: [EMAIL PROTECTED]
Reported By: [EMAIL PROTECTED]
-Status: Open
+Status: Feedback
Bug Type: Scripting Engine problem
Operating System: FreeBSD 4.5
PHP Version: 4.2.0
New Comment:
What if you remove that bogus 'die(..)' stuff from the
function? It now dies when there are no more rows.
Previous Comments:
------------------------------------------------------------------------
[2002-05-17 16:51:06] [EMAIL PROTECTED]
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
[EMAIL PROTECTED]
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=17295&edit=1