PHP , PDO : FETCH_OBJ nie oddaje wartosci

0

Witam,
plan : stworze funkcje -WybiezWszytkoZtabeli ktora kazda query zwroci jako obiekt i przechowa to w zmiennej : $_results,
problem jest taki ze jesli umieszcze

$this->_results->fetch(PDO::FETCH_OBJ);

w klasie i w funkji : WybiezWszytkoZtabeli , strona wyswietla jeden wynik w nieskonczonosc.

class DB{
	private static $_instance= null;
	public
	$_pdo,
	$_query,
	$_error= false,
	$_results,
	$_count= 0;
	//polaczenie z baza danych
	public function __construct(){
		try {
			$this->_pdo= new PDO('mysql:host=888; dbname=test', 'paw3', 'k05a');
			$this->_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			//echo 'ok';
		} catch (PDOException $e) {
			$e->getMessage();
			die();
		}
		
		
	}
	// sprawdza polaczenie zeby za kazdym razem nielaczyc sie z baza danych
	public static function getInstance(){
		if(!isset(self::$_instance)){
			self::$_instance= new DB();
		}
		return self::$_instance;
	}
	//funkcja Select * FROM tabela i zwtaca jako obiekt
	public function WybiezWszytkoZtabeli($tabela){
		
		//$this->_error=false;
		$sql="SELECT * FROM `$tabela`";
		
		$this->_results= $this->_pdo->query($sql);
		$this->_results->fetch(PDO::FETCH_OBJ);
		return $this;
		
		
	}
	
	public function res(){
		return $this->_results;
	}
	
	public function error(){
		return $this->_error;
	}
}
// !! nie dziala , zwraca ciag w nieskonczonosc
$ta='users';
$user= DB::getInstance()->WybiezWszytkoZtabeli($ta);
while($r=$user->res()){
	 echo $r->username.'<br>';
} 

jesli umieszcze w petli WHILE poza klasa wszytko gra.

$ta='users';
$user= DB::getInstance()->WybiezWszytkoZtabeli($ta);
while($r=$user->res()->fetch(PDO::FETCH_OBJ)){
	 echo $r->username.'<br>';
}

Prosilbym o jakas rade:) PoZdr

1

Bo ten kod nie ma sensu. Pobierasz jeden wiersz (jedno fetch) z którym nie robisz nic, następnie dobierasz się do _results (poprzez metodę res) w której nic nie ma oprócz rezultatu wykonania zapytania.

Przede wszystkim oddziel sobie klasę z połączeniem od klasy z wynikiem zapytania. WybieRanie (a nie "wybieżanie") powinno zwracać nowy obiekt z wynikiem zapytania.

Poza tym nie rozumiem po co w ogóle tworzysz zwrot wyników w taki sposób - taki wrapper na PDO, który z założeń nie różni się niczym oprócz nazwami metod (zamiast fetch ma być res).

Może nie kombinuj samemu, tylko znajdź sobie jakiś kurs/tutorial? Bo tłumaczyć od podstaw na forum nikt nie będzie, a to zostało już wiele razy opisane w różnych materiałach.

0

To fakt ten kod nie ma sensu...thx

1 użytkowników online, w tym zalogowanych: 0, gości: 1