-
06.01.12 00:24 #1
- Registriert seit
- Jan 2011
- Beiträge
- 22
Hallo allerseits

Ich habe vor 2 Wochen mit der Objektorientierten Programmierung angefangen,
und wollte nun meine SQL-Daten damit auslesen.
Ohne OOP würde ich das so machen:
Mein Ansatz mit OOP:PHP-Code:$code = mysql_query("select * from example where Name='Test';");
while($zeile = mysql_fetch_array($code))
{
$ID = $zeile["ID"];
$Name = $zeile["Name"];
}
Allerdings wird bei meiner OOP-Variante ja jedes mal eine neue While-Schleife ausgeführt.PHP-Code:class sql{
static $sql;
function sql_code($code){
$this->sql = $code;
}
function sql_auslesen($row){
$code = mysql_query($this->sql);
while($zeile = mysql_fetch_array($code))
{
return $zeile[$row];
}
}
}
$sql = new sql;
$sql->sql_code("select * from example where Name='Test';");
$ID = $sql->sql_auslesen("ID");
$Name = $sql->sql_auslesen("Name");
Kann man das irgendwie umgehen?
Vielen Dank im Vorraus.
--
Mit freundlichen Grüßen
Daniel K.
-
Einfach den Output der Schleife in eine globale Variable packen und dann könnte man mit einer neuen Funktion die einfach auslesen.
Halt fast genauso wie bei $sql.Tutorials: Ajax JSON Chat PHP
-
06.01.12 01:55 #3
- Registriert seit
- Jan 2011
- Beiträge
- 22
Wie genau meinst du das?
So?
Aber dann hab ich doch auch die ganzen schleifen...PHP-Code:class sql{
static $sql;
public $werte;
function sql_code($code){
$this->sql = $code;
}
function sql_auslesen($row){
$code = mysql_query($this->sql);
while($zeile = mysql_fetch_array($code))
{
$werte = $werte . "|" . $zeile[$row];
}
$this->werte = explode("|", $this->werte);
}
function sql_werte($row){
$arrnum = array_search($row, $this->werte);
return $this->werte[$arrnum];
}
}
...
[Ca. 10 Minuten später]
...
Juhuu!! :P
Es klappt
Du hast mich auf ne Idee gebracht
Ich führ jetz ne while schleife in der while schleife aus, die -- ach guckt einfach selber
Viiiiieelen DankePHP-Code:class sql{
static $sql;
public $rows;
public $werte;
function sql_code($code){
$this->sql = $code;
}
function sql_auslesen($rows){
$this->rows = explode("|", $rows);
$rows_num = count($this->rows);
$code = mysql_query($this->sql);
while($zeile = mysql_fetch_array($code))
{
$i = 0;
while($i < $rows_num){
$this->werte = $this->werte . $zeile[$this->rows[$i]] . "|";
$i++;
}
}
$this->werte = explode("|", $this->werte);
}
function sql_werte($row){
$arrnum = array_search($row, $this->rows);
return $this->werte[$arrnum];
}
}
$sql = new sql;
$sql->sql_code("select * from example where name='Test';");
$sql->sql_auslesen("ID|name");
$ID = $sql->sql_werte("ID");
$Name = $sql->sql_werte("name");
echo $ID . $Name;

--
MfG Daniel
-
So ähnlich wie das 2.te meinte ich es.
Mit 2 Schleifen verkomplizierst du das doch nur unnötig.
Vielleicht kann ich dir morgen nochmal ein codebeispiel bringen, wie ich es genau meinte.Tutorials: Ajax JSON Chat PHP
-
06.01.12 02:05 #5
- Registriert seit
- Jan 2011
- Beiträge
- 22
Das wäre sehr nett

Vielen Dank schonmal im Vorraus.
-
06.01.12 16:01 #6
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Kurze Zwischenfrage: Warum nimmst du nicht PDO wenn du es mit OOP machen willst?
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
06.01.12 17:02 #7
- Registriert seit
- Jan 2011
- Beiträge
- 22
O.o hab grad mal gegooglet um zu gicken was das is...
Ich versteh nur Bahnhof
Die Klasse ist also schon standartmäßig bei PHP5 drinne,
muss also nur nen Objekt anlegen, und dann?
-
Nutz doch einfach mysqli - ist MySQL nur halt oop.
Tutorial:
http://www.tutorials.de/content/1168...-absetzen.htmlTutorials: Ajax JSON Chat PHP
-
06.01.12 18:06 #9
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Du legst ein PDO-Objekt an und darüber kannst du dann so tolle Sachen machen wie Prepared Statements. Beispiel anhand deines Codes:
Code php:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
// Verbindung aufbauen $db = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'benutzername', 'passwort'); if(!$db) { die('Verbindung zur Datenbank fehlgeschlagen'); } // Exceptions einschalten; sobald ein Fehler auftritt wird eine Exception geworfen $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Prepared Statement vorbereiten $statement = $db->prepare('SELECT * FROM example WHERE Name = ?'); // Variable Werte ins Statement einfügen $statement->bindValue(1, 'Test'); // Statement ausführen $statement->execute(); // Resultate abholen $result = $statement->fetchObject(); // Resultat anzeigen echo $result->Name; // Zu Debugging-Zwecken noch mal ein var_dump var_dump($result);
Ist schon ein Unterschied, wenn man das über PDO macht, ich rate allerdings dazu, denn man weiß nie, warum es sich lohnt, es einzusetzen. Ich zähle mal ein paar Gründe auf:
- Übersichtlichkeit im Code (ist für mich persönlich das wichtigste)
- Einigermaßen Sicherheit, was SQL-Injections angeht (wegen Prepared Statements)
- Sehr flexibel, was das Backend angeht; Man kann relativ einfach die Datenbank austauschen (z.B. von MySQL zu PostgreSQL)
- Performance-Gewinne bei Statements innerhalb von Schleifen (wenn man mal mehrere Datensätzen abholen will)
Jede vernünftige Programmiersprache bietet heutzutage Prepared Statements an, und das ist auch gut so.
Wenn du zu den Punkten oder allgemein Fragen hast, kannst du sie gerne stellen. Wenn du dafür (noch) nicht bereit bist, kannst du meine Versuche, dich zu etwas professionelleren Code zu bewegen, ignorieren
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
07.01.12 12:13 #10
- Registriert seit
- Jan 2011
- Beiträge
- 22
Aber wenn ich das richtig verstehe kann man hier doch nur 1 Zeile auslesen,
also wenn ich SELECT * FROM test WHERE Ort='Hannover' mache und es mehrer Benutzer
aus diesem Ort gibt, zeigt er mir doch nur einen an, oder?
Ich müsste dann doch ne while-schleife machen, oder?
Außerdem sieht mir persönlich mysqli auf den ersten Blick übersichtlicher aus..
-
Und wo ist das Problem um fetch_object() eine Schleife zumachen?
Tutorials: Ajax JSON Chat PHP
-
07.01.12 12:19 #12
- Registriert seit
- Jan 2011
- Beiträge
- 22
Das ist kein Problem

Wollte nur nachfragen, ob meine überlegung mit der Schleife richtig ist :P
-
07.01.12 13:26 #13
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Deine Überlegung ist richtig. Warum denkst du, das MySQLi übersichtlicher aussieht? Prinzipiell ist es genauso aufgebaut wie PDO nur das man bei MySQLi noch prozedural arbeiten könnte, wenn man das wöllte. Da du aber OOP machen willst, kannst du auch gleich PHP Data Objects nehmen und machst damit sogar unabhängig von der Datenbank.
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Vorausgesetzt du optimierst dein Code für alle Datenbanksysteme
Tutorials: Ajax JSON Chat PHP
-
07.01.12 14:05 #15
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Wieso optimieren? ANSI-SQL verwenden und gut ist

EDIT: Hersteller-spezifische Statements kann man auch in Stored Procedures oder Functions implementieren. Der SQL-Server ist in den meisten Fällen ohnehin damit beschäftigt, Däumchen zu drehen.Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
Ähnliche Themen
-
Daten aus MySQL auslesen
Von gelaniee im Forum Flash PlattformAntworten: 4Letzter Beitrag: 29.06.09, 18:50 -
Daten aus MySql-DB auslesen
Von Ilona85 im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 23.01.06, 11:33 -
Daten aus MySQL auslesen!
Von 10110010 im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 06.01.06, 01:06 -
Daten aus 2 MySQL-Tabellen auslesen
Von supercat1510 im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 24.05.03, 20:53 -
Daten aus mySQL auslesen
Von Sebastian Wramba im Forum PHPAntworten: 7Letzter Beitrag: 05.01.02, 14:48



2Danke

Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren