php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.01.2010, 16:38  
Erfahrener Benutzer
 
Registriert seit: 19.01.2010
Beiträge: 324
PHP-Kenntnisse:
Anfänger
chunky befindet sich auf einem aufstrebenden Ast
Standard Ergebnis einer Datenbankabfrage als Objekt

Derzeit habe ich etwa so etwas:

PHP-Code:
$sql "SELECT * FROM model LIMIT 1";
$model $db->query3d($sql); 
Die query3d function liefert mir einen multi-dimensionalen assoziativen Array zurück, der alle Datenbankfelder enthält, z.B.

$model = array(id = 1, name = "modelname", rowx = "", rowz = "");

Gibt es eine Möglichkeit, einem Objekt die Ergebnisse der Datenbankabfrage zuzuordnen? In etwa so:

PHP-Code:
$sql "SELECT * FROM model LIMIT 1";
$model->getData(); 
getData sollte dann dem Objekt alle Datenbankfelder zuordnen und ich möchte darauf dann so zugreifen:
$model->id
$model->name
$model->rowx
$model->rowz

Das Problem: ich weiss nicht, wie viele Spalten die Datenbank-Tabelle enthält.
Die Tabelle soll erweiterbar sein.
Durch Rückgabe eines Arrays funktioniert das sehr gut. Jedoch weiss ich nicht, wie ich das gleiche mit einem Objekt umsetzen kann.
chunky ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.01.2010, 16:40  
Erfahrener Benutzer
 
Registriert seit: 13.05.2009
Beiträge: 1.166
PHP-Kenntnisse:
Fortgeschritten
dennis81 befindet sich auf einem aufstrebenden Ast
Standard

Ähm, ja! Warum nicht?
__________________
Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)
dennis81 ist offline  
Alt 27.01.2010, 16:40  
Erfahrener Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 645
PHP-Kenntnisse:
Fortgeschritten
draco88 befindet sich auf einem aufstrebenden Ast
draco88 eine Nachricht über ICQ schicken
Standard

Schau dir mal mysql_fetch_object an. Musst nur deine query3d-Methode dafür umschreiben.
draco88 ist offline  
Alt 27.01.2010, 16:45  
Erfahrener Benutzer
 
Registriert seit: 13.05.2009
Beiträge: 1.166
PHP-Kenntnisse:
Fortgeschritten
dennis81 befindet sich auf einem aufstrebenden Ast
Standard

Hat die Methode einen zweiten (unsichtbaren) Parameter? In den Comments steht das hier:
Zitat:
mysql_fetch_object($res, 'Test')
Im Manual steht aber nur das hier:
Zitat:
object mysql_fetch_object ( resource $Ergebnis-Kennung )
Aus dem Grunde habe ich die Funktion nie wirklich genutzt.
__________________
Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)
dennis81 ist offline  
Alt 27.01.2010, 16:47  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Hat die Methode einen zweiten (unsichtbaren) Parameter?
Hat sie, genau genommen sogar 3! Schau mal ins englischsprachige Handbuch: PHP: mysql_fetch_object - Manual .
Asipak ist offline  
Alt 27.01.2010, 16:47  
Erfahrener Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 645
PHP-Kenntnisse:
Fortgeschritten
draco88 befindet sich auf einem aufstrebenden Ast
draco88 eine Nachricht über ICQ schicken
Standard

mysql_fetch_object gibt normalerweise ein Object vom Type stdClass zurück, mit dem 2. Parameter kann man bestimmen, welche Klasse genommen werden soll.
draco88 ist offline  
Alt 27.01.2010, 16:52  
Erfahrener Benutzer
 
Registriert seit: 13.05.2009
Beiträge: 1.166
PHP-Kenntnisse:
Fortgeschritten
dennis81 befindet sich auf einem aufstrebenden Ast
Standard

Jau, total genial. Habe es gerade mal ausprobiert. Deswegen hier auch mal ein mini-Testskript für den TE:
PHP-Code:
<?php

class Benutzer {
    protected 
$id;
    protected 
$name;
    protected 
$vorname;
    
    public function 
__get($key) {
        if (
array_key_exists $keyget_object_vars $this ) )) {
            return 
$this->$key;
        }
    }
    
    public function 
__set($key$value) {
        if (
array_key_exists $keyget_object_vars $this ) )) {
            
$this->$key $value;
        }
    }
}
$con mysql_connect('localhost''++++''++++');

mysql_select_db('demo'$con);

$res mysql_query('select id, name, vorname from benutzer'$con);

$sets = array();

while ( 
$obj mysql_fetch_object($res'Benutzer') ) {
    
$sets[] = $obj;
}

var_dump($sets);
__________________
Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)
dennis81 ist offline  
Alt 27.01.2010, 21:38  
Erfahrener Benutzer
 
Registriert seit: 19.01.2010
Beiträge: 324
PHP-Kenntnisse:
Anfänger
chunky befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank für die Antworten. Das ist auf jeden Fall die richtige Funktion.
Ich bin noch neu in der Objektorientierung und weiss nicht, wie ich den Rückgabewert dieser Funktion der Klasse zuordnen kann.

PHP-Code:
//DB Klasse
//...
public function query3dObject($sql$classname ''){
    
$query mysql_query($sql);
    
$obj mysql_fetch_object($query$classname);

    return 
$obj;
}

//Model Klasse
//...
public function getData()
{
        global 
$db;
        global 
$model;

        if (
$this->id){
            
$sql "SELECT * FROM models WHERE id = '$this->id' LIMIT 1";
            
$this $db->query3dObject($sql'model');
        }
}

//Aufruf mit 
$db = new DB(...);
$model = new Model($id);
$model->getData(); 
Die mysql_fetch_object-Funktion verstehe ich noch nicht ganz.
Man kann ihr also einen Klassen-Namen übergeben. Liefert die Funktion in diesem Fall auch ein Objekt zurück? Warum gibt die Funktion in diesem Fall nicht true oder false zurück?

Wie weise ich das Ergebnis der query3dObject-Funktion dem $model-Objekt zu?

Ich habe folgendes versucht, erhalte aber eine Fehlermeldung:
PHP-Code:
$obj $db->query3dObject($sql'model');
foreach(
get_object_vars($obj) as $key => $value){
    
$this->$key $value;
}
//Invalid argument supplied for foreach() 
chunky ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Objekt per Klassenmethode löschen Ti-Systems PHP Tipps 2010 4 20.01.2010 19:28
[Erledigt] Objekt Iteration Löschmethode stayInside PHP-Fortgeschrittene 10 29.11.2009 15:07
[Erledigt] Von einem Objekt auf ein anders Objekt zugreifen Xenon54 PHP Tipps 2009 12 16.10.2009 16:21
weitere if-Abfrage liefert kein Ergebnis evimartin PHP Tipps 2009 11 17.09.2009 13:52
PHP/Access - Anfrageergebnis mit gesammten Spalten oder als Objekt ? SkiD PHP Tipps 2009 3 15.08.2009 23:50
Objekt löschen via Methodenübergabe desselben nikosch Software-Design 19 01.06.2009 00:38
[Erledigt] Objekt an Konstruktor übergeben hawkeye78 PHP Tipps 2009 7 28.02.2009 19:01
[Erledigt] Subquery mit ORDER BY ohne Ergebnis stefanjann Datenbanken 8 11.12.2008 10:35
Objekt im GET-Query wird nicht übertragen Ralpho PHP-Fortgeschrittene 10 05.05.2008 10:03
Objekt als ComboBox behandeln Nalincah PHP Tipps 2008 2 08.11.2007 03:52
Oracle decode - Bei Select ohne Ergebnis ? Cyberbob_at_tot Datenbanken 6 09.03.2006 12:04
[Erledigt] PHP5 OOP Zugriff aus einem Objekt auf ein externes Objekt PHP Tipps 2006 5 28.01.2006 16:05
Objekt übergeben Fatal Error PHP Tipps 2007 5 28.12.2005 14:43
Ergebnis einer DBabfrage in HTML Dateien Suchen u. anzeigen PHP Tipps 2005-2 0 15.08.2005 22:35
kann sich ein Objekt selbst serialisieren? ajo_silent PHP Tipps 2005-2 24 27.06.2005 09:13

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php datenbankabfrage objektorientiert, php datenbank objekt, php objekte datenbank, php objekt datenbank, http://www.php.de/php-einsteiger/63853-ergebnis-einer-datenbankabfrage-als-objekt.html, php foreach datenbankabfrage, php objekte aus datenbank, get function datenbank abfrage php, php5 datenbankabfrage, php objekt abfragen, objektorientierte datenbankabfrage, datenbank objekt php, php datenbankabfrage objekt, datenbankobjekt php, php object aus db, objekt in datenbank php, php datenbank als objekt, php array mit objekten abfragen, php-klasse datenbankabfrage, php objekt aus db

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:00 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum