Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

habe meine eigene Datenbankklasse geschrieben die noch sehr sehr einfach ist.

Jetzt habe ich ein Problem mit mysql_fetch_object, welches bei mysql_fetch_array nicht gibt...er tut einfach nichts.....

Die Methode aus der Klasse:

/**
* Dies gibt die Resultate von dem Select Query
* in einem object wieder
*
* @param $rData - Query für den Abruf von Daten
* @return - gibt die Daten als Objekt zurück
*/
public static function fetchObject($rData)
{
// prüft, ob es erfolgreich war
if($oResult = mysql_fetch_object($rData))
{
return $oResult;
}
else
{
return false;
}
}
[/PHP]

Zum aufrufen:

[PHP]while($oRow = dbklasse::fetchObject($rRes))
{
$mache_dies_und_das = array();
}

Das Problem ist, das er nichts zurück gibt und in die bedingung else fällt.

Habe nachgeschaut ob es am query liegt, doch daran liegt es nicht...er gibt mir sogar was zurück:

Resource id #19

Woran liegt es denn?

mfg Aoshi

Geschrieben (bearbeitet)

in $rData ist das Resultat vom Query drinne.

Als würde ich z.B. Mysql_fetch_object(mysql_query($sQuery)) anwenden.

Nur meine klasse ist da was anders aufgebaut:

public static function query($sQuery)
{
$rResult = mysql_query($sQuery);
return $rResult;
}
public static function fetchObject($rData)
{
// prüft, ob es erfolgreich war
if($oResult = mysql_fetch_object($rData))
{
return $oResult;
}
else
{
return false;
}
}
$rRes = dbklasse::query($sQuery);
while($oRow = dbklasse::fetchObject($rRes))
{
$mache_dies_und_das = array();
}[/PHP]

So würde das ganze dann aussehen. Also eigentlich etwas ganz simples und sollte anversicht auch so funktionieren oder nicht?

In $rData kam dann Resource id #19 raus, als ich es mir ausgeben lassen habe.

Doch wenn ich es so mache, klappt es:

[PHP]public static function query($sQuery)
{
$rResult = mysql_query($sQuery);
return $rResult;
}
public static function fetchObject($rData)
{
// prüft, ob es erfolgreich war
if($oResult = mysql_fetch_object($rData))
{
return $oResult;
}
else
{
return false;
}
}
$rRes = dbklasse::query($sQuery);
while($oRow = mysql_fetch_object($rRes))
{
$mache_dies_und_das = array();
}

Klar könnte ich es so machen, aber wäre ja nicht der sinn der sache ;)

lg Aoshi

PS.: Jetzt funktioniert es und habe keine Ahnung warum -.-

Alles so wie jetzt beschrieben geblieben...

Dennoch bedanke ich mich bei allen die mir die hilfe angeboten haben :)

Bearbeitet von Aoshi
Geschrieben

Warum ist Deine Klasse überhaupt static? Ich denke daran wird auch das Problem sein, denn wenn Du den statischen Methodennamen aufrufst, der eben wie eine Funktion behandelt wird.

Ich würde eine Datenbank Klasse nicht static machen

Geschrieben

Dir ist aber schon klar, dass du viel unnützen Code schreibst, oder?

Deine Methode könnte auch so aussehen:


public static function fetchObject($rData) {
return mysql_fetch_object($rData);
}
[/PHP]

Geschrieben

Warum überhaupt eine Methode die die sich fetchObject nennt?

Du solltest dir ein wenig über dein Klassenkonzept Gedanken machen, dass ganze Ding ist Kurzerhand Schrott, schon allein weil du einen DB Wrapper (mehr ist das ja nicht) als static ins System jagst.

Warum auserdem verinst du nicht sämtliche fetches in einer Methode?


/*
*
* fetch auf die datenbank setzen
* @param $query / vorher abgesandter Query an die datenbank
* @param $fetchSwitch / auswahl welcher typ eines fetches gewählt wird
*
*/
public function dbFetch($query, $fetchSwitch){

if(is_resource($this->_connect)){

switch($fetchSwitch){

case 'assoc':
$this->_fetch = mysql_fetch_assoc($query);
break;

case 'array':
$this->_fetch = mysql_fetch_array($query);
break;

case 'row':
$this->_fetch = mysql_fetch_row($query);
break;

case 'object':
$this->_fetch = mysql_fetch_object($query);
break;
}

return $this->_fetch;
}
}
[/PHP]

So kannst du mehrere Fetches in einer Methode abhandeln.

Warum machst du überhaupt

[PHP]
// prüft, ob es erfolgreich war
if($oResult = mysql_fetch_object($rData))
{
return $oResult;
}

eine Zuweisung in eine If Abfrage? Das ist vollkommener Humbug.

Nimm das bitte nicht persönlich, aber das was du da machst hat weder was mit OOP zu tun und schon gar nicht mit einem durchdachten oder zumindest im Ansatz durchdachten Klassenjonzept.

Gruß Lit-Web

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...