MySQLi Klasse erweitern oder MySQL verwenden?

unrealzero_php

Erfahrenes Mitglied
Hallo zusammen

Bei einem aktuellen Projekt möchte ich eine eigene MySQL-Klasse schreiben.

Nun meine Frage: soll ich diese basierend auf mysqli oder mysql, gibt es einen Unterschied ausser das mysqli schon OOP ist.

Was sind die Vor-/Nachteile?
 
PHP stellt zwei verschiede Möglichkeiten bereit auf eine MySQL-Datenbank zuzugreifen. Seit der Version 5 von PHP gibt es die neue mysqli-Erweiterung mit der es nun auch möglich ist die Neuerungen von MySQL >= 4.1.x zu nutzen.

Guck einfach mal auf der wohl wichtigesten Seite für PHP Leute :D
http://de2.php.net/mysqli
 
PHP stellt zwei verschiede Möglichkeiten bereit auf eine MySQL-Datenbank zuzugreifen. Seit der Version 5 von PHP gibt es die neue mysqli-Erweiterung mit der es nun auch möglich ist die Neuerungen von MySQL >= 4.1.x zu nutzen.

Guck einfach mal auf der wohl wichtigesten Seite für PHP Leute :D
http://de2.php.net/mysqli

Erst mal danke für die schnelle Antwort.

D.h. wenn ich mit MySQL 5.x arbeite, ergibt es keinen Sinn die „veraltete“ mysql Funktion zu benutzen?

Mit der alten mysql Funktion konnte ich folgendermassen die Resultate via Array zurückgeben.

PHP:
public function getRow(){
		return mysql_fetch_array($this->result);
	}

Mit der neuen Funktion mysqli ist dies nicht mehr möglich, hier bekomme ich lediglich den ersten Datensatz zurück, wie kann ich es hier bewerkstelligen?
PHP:
public function getRow($sqlQuery){
			$result = $this -> MySQLiObj -> query($sqlQuery);
			$array = $this -> MySQLiObj -> fetch_array($result);

			return $array;
		}
 
Hi,

Mit der alten mysql Funktion konnte ich folgendermassen die Resultate via Array zurückgeben.

PHP:
public function getRow(){
		return mysql_fetch_array($this->result);
	}

Mit der neuen Funktion mysqli ist dies nicht mehr möglich, hier bekomme ich lediglich den ersten Datensatz zurück, wie kann ich es hier bewerkstelligen?

Wie kommst Du darauf, dass [phpf]mysql_fetch_array[/phpf] alle Datensätze liefert? Das ist Quark. Die Funktion gibt nur einen Datensatz, nämlich den aktuellen, zurück. Ein Abfrageergebnis wird deshalb üblicherweise in einer Schleife durchlaufen.

Die MySQLi_Result-Klasse bietet hingegen ab PHP5.3.0 die Methode fetch_all().

LG
 
Hi,



Wie kommst Du darauf, dass [phpf]mysql_fetch_array[/phpf] alle Datensätze liefert? Das ist Quark. Die Funktion gibt nur einen Datensatz, nämlich den aktuellen, zurück. Ein Abfrageergebnis wird deshalb üblicherweise in einer Schleife durchlaufen.

Die MySQLi_Result-Klasse bietet hingegen ab PHP5.3.0 die Methode fetch_all().

LG

Danke für den Hinweis auf die neue Funktion.

Wenn ich mit meiner alten Methode getRow() die Ergebnisse abfrage kann ich diese über while ausgeben, wenn ich die Methode getRow() mit mysqli umschreiben funktioniert dies nicht, woran liegt das?

PHP:
public function getRow(){
		return mysql_fetch_array($this->result);
	}

PHP:
while($row = $sqlobj->getRow()){
	echo $row[0]." - ".$row[1];
	echo "<br />\n";
}
 
Hi,

so, wie Du die Methode umgeschrieben hast, wird ja auch bei jedem Aufruf von getRow() die Abfrage erneut ausgeführt. Das müsste eigentlich in einer Endlosschleife enden, die wieder und wieder den ersten gefundenen Datensatz ausgibt.
Ich kenne Deine (alte) MySQL-Klasse nicht, kann gut sein, dass Du die einfach einstampfen und stattdessen die MySQLi-Klassen, so wie sie sind, verwenden kannst.

LG
 
Zurück