Zum Inhalt springen

Problem mit mysql_fetch_object und meiner DB klasse


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...