Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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

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]

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 Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.