For Programmers: Free Programming Magazines  


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();
?>

Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com