MySQL - Object ID 2
Hallo..
ich habe folgendes Problem:
Ich möchte den letzten Stand einer MySQL Datenbank auslesen. Hierfür habe ich die Spalte "stand", in die bei einer Änderung über mein Formular (PHP) automatisch das aktuelle Datum eingetragen wird.
Beim Abfragen der Datensätze möchte ich diesen Stand auch (gesondert) auslesen und anzeigen:
Wenn ich das so versuche, erhalte ich immer folgende Meldung: Object id #2
Woran liegt das??
Mit der DB bin ich verbunden und die Befehle funktionieren so auch für den Rest der Daten. Habe noch was versucht, bringt aber den gleichen Fehler:
Thx, in advance,
J.R.
PS: Die Object id #2 hat auch nichts mit der ID des Datensatzes zu tun..
Gibts vielleicht noch eine andere Möglichkeit, den Stand der Tabelle (wann halt die letzte Änderung war) abzufragen??
ich habe folgendes Problem:
Ich möchte den letzten Stand einer MySQL Datenbank auslesen. Hierfür habe ich die Spalte "stand", in die bei einer Änderung über mein Formular (PHP) automatisch das aktuelle Datum eingetragen wird.
Beim Abfragen der Datensätze möchte ich diesen Stand auch (gesondert) auslesen und anzeigen:
$stand = "SELECT stand FROM tabelle ORDER BY stand DESC LIMIT 1";
$dbstand = $db->query($stand);
if (!$dbstand) {
die('Der Query konnte nicht ausgeführt werden: '.$db->error);
}
if ($dbstand->num_rows) {
echo "$dbstand";
}
Wenn ich das so versuche, erhalte ich immer folgende Meldung: Object id #2
Woran liegt das??
Mit der DB bin ich verbunden und die Befehle funktionieren so auch für den Rest der Daten. Habe noch was versucht, bringt aber den gleichen Fehler:
$stand = "SELECT MAX(stand) AS stand FROM tabelle";
$dbstand = $db->query($stand);
...
Thx, in advance,
J.R.
PS: Die Object id #2 hat auch nichts mit der ID des Datensatzes zu tun..
Gibts vielleicht noch eine andere Möglichkeit, den Stand der Tabelle (wann halt die letzte Änderung war) abzufragen??
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 126286
Url: https://administrator.de/contentid/126286
Ausgedruckt am: 22.11.2024 um 01:11 Uhr
16 Kommentare
Neuester Kommentar
... ich schätze Du hast dir eine eigene DB Klasse geschrieben !? - dann solltest Du dir noch eine 'Error' Funktion mit einfügen.
Bei einer Fehlermeldung: 'non Object' - ist meist ein Fehler beim Erstellen des Objekts aufgetreten. ... $db sollte ein Objekt und kein String sein !!!
/**
*
* @return string String mit Fehlercode und Fehlermedlung
*/
public funktion getError()
{
return mysql_errno($this->db) . ' : ' . mysql_error($this->db);
}
Bei einer Fehlermeldung: 'non Object' - ist meist ein Fehler beim Erstellen des Objekts aufgetreten. ... $db sollte ein Objekt und kein String sein !!!
... ist etwas ungewöhnlich Programmiert - aber ok.
Dieses Konstrukt solltest Du nun auch in deiner query() Funktion einbauen um bei einer Fehlerhaften SQL Anweisung eine Meldung zu bekommen.
Du benutzt 'mysqli' statt 'mysql' - das könnte schon den Fehler aus deinem 2. Post erklähren.
PS: '... @new ...' hab ich ja noch nie gesehen - ist das PHP6 ?
Dieses Konstrukt solltest Du nun auch in deiner query() Funktion einbauen um bei einer Fehlerhaften SQL Anweisung eine Meldung zu bekommen.
Du benutzt 'mysqli' statt 'mysql' - das könnte schon den Fehler aus deinem 2. Post erklähren.
PS: '... @new ...' hab ich ja noch nie gesehen - ist das PHP6 ?
mysqli = PHP-Manual: MySQL Improved Extension (de.php.net)
Ich greif mal bei deinem Eingangspost ein weil mittlerweile bestimmt keiner mehr einen Überblick über deinen derzeitigen Code hat !?
Die "query()"-Methode der MySQLi-Klasse liefert bei einem SELECT ein Objekt zurück ! PHP-Manual: mysqli::query() (de.php.net)
Dies kannst du sehr gut mit den beiden Funktionen PHP-Manual: print_r() (php.net) und PHP-Manual: var_dump()() (php.net) feststellen und sie gleichzeitig betrachten ;)
mysqli::num_rows() gibt die Anzahl der enthaltenen Datensätze zurück, sonst nichts !
Somit ist deine Variable "$dbstand" immer noch das Objekt der mysqli-Klasse welches durch die Methode "query()" zurückgegeben wurde.
Ein einfaches "echo $dbstand" kann so also auch einfach nur das ausgeben was in der Variable steht, nämlich die Referenz auf ein Objekt (Object id #2) !
Du musst jetzt also die einzelnen Datensätze aus dem Objekt "extrahieren", s. PHP-Manual: mysqli::fetch_assoc() (de.php.net)
Auf der Seite findest du auch eine einfaches (im Sinne von einfach Programmiert) Beispiel.
Wenn du nur einen einzelnen Datensatz auslesen möchtest, geht das auch (s.Beispiel) ohne "while()"-Schleife:Pi mal Daumen jedenfalls (Habe es so in den Browser getippt).
~Arano
Ich greif mal bei deinem Eingangspost ein weil mittlerweile bestimmt keiner mehr einen Überblick über deinen derzeitigen Code hat !?
Die "query()"-Methode der MySQLi-Klasse liefert bei einem SELECT ein Objekt zurück ! PHP-Manual: mysqli::query() (de.php.net)
Dies kannst du sehr gut mit den beiden Funktionen PHP-Manual: print_r() (php.net) und PHP-Manual: var_dump()() (php.net) feststellen und sie gleichzeitig betrachten ;)
mysqli::num_rows() gibt die Anzahl der enthaltenen Datensätze zurück, sonst nichts !
Somit ist deine Variable "$dbstand" immer noch das Objekt der mysqli-Klasse welches durch die Methode "query()" zurückgegeben wurde.
Ein einfaches "echo $dbstand" kann so also auch einfach nur das ausgeben was in der Variable steht, nämlich die Referenz auf ein Objekt (Object id #2) !
Du musst jetzt also die einzelnen Datensätze aus dem Objekt "extrahieren", s. PHP-Manual: mysqli::fetch_assoc() (de.php.net)
Auf der Seite findest du auch eine einfaches (im Sinne von einfach Programmiert) Beispiel.
Wenn du nur einen einzelnen Datensatz auslesen möchtest, geht das auch (s.Beispiel) ohne "while()"-Schleife:
<?php
$sQuery = "SELECT stand FROM tabelle ORDER BY stand DESC LIMIT 1";
$oDbResult = $oDb->query($sQuery);
if (FALSE!==$oDbResult) {
die('Der Query konnte nicht ausgeführt werden: '.$oDb->error);
}
if (0 > $oDbResult->num_rows) {
$aDbStand = $oDbResult->fetch_assoc();
echo $aDbStand['stand'].'<br>';
}
?>
~Arano
Hey J.R.
wie sieht es aus, hast du es mittlerweile zu laufen gebracht ?
Hier noch eine kleine Korrektur zu meinem Beispiel:
Zeile 07: "0 > $oDbResult->num_rows"
Ist natürlich Blödsinn den 0 wir nie größer sein können als die Anzahl der Zeilen aus der Ergebnistabelle, höchstens gleich. Das muss also "0 < $oDbResult->num_rows" heißen.
~Arano
wie sieht es aus, hast du es mittlerweile zu laufen gebracht ?
Hier noch eine kleine Korrektur zu meinem Beispiel:
Zeile 07: "0 > $oDbResult->num_rows"
Ist natürlich Blödsinn den 0 wir nie größer sein können als die Anzahl der Zeilen aus der Ergebnistabelle, höchstens gleich. Das muss also "0 < $oDbResult->num_rows" heißen.
~Arano