Home > Archive > PHP SQL > August 2007 > Strange class OOP behavior
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
Strange class OOP behavior
|
|
| Marcel Molenaar 2007-08-27, 7:37 pm |
| Anyone ever experienced this problem.
When i pass a mysql result to the constructor of a class and use that
resultset inside that class the original resultset outside the class gets
affected too. That is not right i think because my result inside my class is
private. Is this a bug? Can someone look at my code below please:
<?php
require_once('includes/connect.php');
class test {
private $_result;
private $_record;
public function __construct($result) {
$this->_result = $result;
}
public function show() {
while($this->_record = mysql_fetch_array($this->_result)) {
echo $this->_record['name'].'<br />';
}
}
}
# usage
# sql statement dat artikels ophaald uit cartal database
$SQL = "SELECT * FROM test_table";
# uitvoeren van dit statement
$RESULT = mysql_query($SQL,$conn);
$t = new test($RESULT);
$t->show();
// mysql_data_s ($RESULT,0);
// this prints out nothing unless i call mysql_data_s ($RESULT,0) before
this whileloop so that means that the pointer of the recordset had moved to
the end because of the while loop in the class itself...that is strange!
while($RECORD = mysql_fetch_array($RESULT)) {
echo $RECORD['name'].'<br />';
}
?>
| |
| nithin 2007-08-29, 4:04 am |
| Hi i tried with your coding in my local server its working fine for
me..
I thing you may gone wrong some other part of the coding...
test using the following code:
create a database: testdb
A table users add a field 'username'
then try with this coding bellow
<?php
$con = mysql_connect('localhost','root','');
$db = mysql_select_db('testdb');
class test {
private $_result;
private $_record;
public function __construct($result) {
$this->_result = $result;
}
public function show() {
while($this->_record = mysql_fetch_array($this->_result)) {
echo $this->_record['username'].'<br />';
}
}
}
# usage
# sql statement dat artikels ophaald uit cartal database
$sql = "SELECT * FROM users";
# uitvoeren van dit statement
$RESULT = mysql_query($sql);
$t = new test($RESULT);
$t->show();
?>
|
|
|
|
|