Georg: MySQL: Trotz erfolgreichem select keine Daten ?!?

Hallo,

ich frage per PHP meine DB ab:

$seitedquery = mysql_query("SELECT * FROM db_worksites WHERE id = '$sendersite'");  
$seiterow = mysql_fetch_object($seitedquery);  
$proxyname		= $seiterow->proxyname;  
$proxyurl		= $seiterow->proxyurl;  
$backlinksite	= $seiterow->backlinksite;  
if($backlinksite=='') $backlinksite = $proxyurl;  
$proxycat		= $seiterow->proxycat;  
$proxyemail		= $seiterow->proxyemail;

Wenn ich mir jetzt per mysql_num_rows die Trefferanzahl augeben lasse, erhalte ich, wie gewünscht, eine 1 (ein Datensatz entsprechend in der DB)--- ABER meine Variablen sind ALLE leer...

Weiß eventuell einer warum ?
mysql_error() liefert übrigens nichts.

Gruss
Georg

  1. Hi,

    $seitedquery = mysql_query("SELECT * FROM db_worksites WHERE id = '$sendersite'");

    selektiere *nie* pauschal alle Spalten. Gib *immer* die gewünschte Spaltenliste an.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      »» $seitedquery = mysql_query("SELECT * FROM db_worksites WHERE id = '$sendersite'");

      selektiere *nie* pauschal alle Spalten. Gib *immer* die gewünschte Spaltenliste an.

      Cheatah

      Hallo Cheatah,

      das Sternchen habe ich nur hier für den Post drin, von daher trotzdem danke für deinen Hinweis. Nur leider ist dieses nicht der Grund warum die varis leer sind...

      Gruss
      Georg

      1. Hi,

        das Sternchen habe ich nur hier für den Post drin, von daher trotzdem danke für deinen Hinweis. Nur leider ist dieses nicht der Grund warum die varis leer sind...

        was sagt var_dump() zu dem Objekt?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          »» das Sternchen habe ich nur hier für den Post drin, von daher trotzdem danke für deinen Hinweis. Nur leider ist dieses nicht der Grund warum die varis leer sind...

          was sagt var_dump() zu dem Objekt?

          Cheatah

          Hi,

          var_dump($seitedquery) -> "resource(4) of type (mysql result)"
          var_dump($seiterow)-> -> "bool(false)"

          Ich verstehe es einfach nicht...

          Gruss
          Georg

          1. Hi!

            » »» das Sternchen habe ich nur hier für den Post drin, von daher trotzdem danke für deinen Hinweis. Nur leider ist dieses nicht der Grund warum die varis leer sind...
            »
            » was sagt var_dump() zu dem Objekt?

            var_dump($seiterow)-> -> "bool(false)"

            Da ist dann etwas schief gegangen, denn $seiterow ist kein Objekt.

            off:PP

            --
            "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
          2. echo $begrüßung;

            var_dump($seitedquery) -> "resource(4) of type (mysql result)"
            var_dump($seiterow)-> -> "bool(false)"
            Ich verstehe es einfach nicht...

            Nun, ist doch einfach: Wenn eine Fetch-Funktion false liefert, ist kein Datensatz (mehr) in der Ergebnismenge.

            Du solltest stets die Rückgabewerte der von dir verwendeten Funktionen auswerten und nicht einfach blind fortfahren. Außerdem empfiehlt es sich immer wieder, beim Programmieren mit PHP das error_reporting auf E_ALL zu stellen, damit man Hinweise beim Zugriff auf nicht vorhandene Variablen bekommt, oder in deinem Fall beim Zugriffsversuch auf Eigenschaften eines Nicht-Objekts.

            Wenn schon das erste Fetch ein false liefert, hat die Abfrage keine Ergebnismenge ergeben. Gib doch mal das Statement im phpMyAdmin oder ähnlichen Oberflächen ein. Dazu müsstest du es zunächst einmal in einer Variablen erstellen, die du zur Kontrolle ausgibst. Vielleicht stellst du dann schon fest, dass da was fehlt, denn ein WHERE id = '' ist beispielsweise korrekte Syntax, liefert nur nichts. Und durch das error_reporting bekommst du vielleicht sogar einen Hinweis auf eine vorher begangene Sünde.

            echo "$verabschiedung $name";

    2. yo,

      selektiere *nie* pauschal alle Spalten. Gib *immer* die gewünschte Spaltenliste an.

      kannst du mal damit aufhören, so ein blödsinn zu erzählen.

      Ilja

      1. Hi,

        »» selektiere *nie* pauschal alle Spalten. Gib *immer* die gewünschte Spaltenliste an.
        kannst du mal damit aufhören, so ein blödsinn zu erzählen.

        wenn es Blödsinn wäre, würde ich das glatt machen.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. echo $begrüßung;

          » »» selektiere *nie* pauschal alle Spalten. Gib *immer* die gewünschte Spaltenliste an.
          » kannst du mal damit aufhören, so ein blödsinn zu erzählen.
          wenn es Blödsinn wäre, würde ich das glatt machen.

          Mit welcher Begründung lehnst du denn immer so strikt dieses SELECT * ab?

          echo "$verabschiedung $name";

          1. Hi,

            Mit welcher Begründung lehnst du denn immer so strikt dieses SELECT * ab?

            mit der Begründung, dass es eine hervorragende Fehlerquelle ist, welche auch dann noch besteht, wenn aktuelle Fehlerfreiheit bewiesen ist.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. echo $begrüßung;

              » Mit welcher Begründung lehnst du denn immer so strikt dieses SELECT * ab?
              mit der Begründung, dass es eine hervorragende Fehlerquelle ist, welche auch dann noch besteht, wenn aktuelle Fehlerfreiheit bewiesen ist.

              Ich bitte um ein Beispiel. Und jetzt sag nicht, dass der Zugriff auf Spalten nach ihrer Reihenfolge eins ist, das so relevant ist, weil es regelmäßig auftaucht.

              echo "$verabschiedung $name";

              1. Hi there,

                Ich bitte um ein Beispiel. Und jetzt sag nicht, dass der Zugriff auf Spalten nach ihrer Reihenfolge eins ist, das so relevant ist, weil es regelmäßig auftaucht.

                Ich fürchte, da kommt nichts mehr. "Weisheiten", die ex cathetra verkündet werden, darf man nicht hinterfragen...

                1. yo,

                  Ich fürchte, da kommt nichts mehr. "Weisheiten", die ex cathetra verkündet werden, darf man nicht hinterfragen...

                  die motivation, anderen vorzuschreiben, wie die welt sich zu drehen hat, geht leider einher mit einer starken lernresistenz.

                  Ilja

        2. yo,

          wenn es Blödsinn wäre, würde ich das glatt machen.

          schau mal, du läßt doch hier sonst immer so den logiker und das genie raus. das * in abfragen ist sicherlich immer kritisch zu betrachten und wird auch oftmals falsch verwendet. aber es hat eine ganze genaue spezifikation, die auch ausserhalb von testumgebungen sinn macht. in keiner doku von rdbms wird darauf hingewiesen, dass es nur zu testzwecken zu gebrauchen ist und niemals in produktiven einsatz. das pauschale ablehnen ist eine unart, die durch solche beiträge wie von dir immer wieder nahrung findet.

          oder mit deinen eigenen worten ausgedrückt, erst denken, dann bei zweifel die doku konsultieren, dann erst den mund aufmachen. oder eben diplomatischer wie es dedlfix ausgedrückt hat, wo sind deine argumente ?

          Ilja

          1. Hi,

            schau mal, du läßt doch hier sonst immer so den logiker und das genie raus. das * in abfragen ist sicherlich immer kritisch zu betrachten und wird auch oftmals falsch verwendet. aber es hat eine ganze genaue spezifikation, die auch ausserhalb von testumgebungen sinn macht. in keiner doku von rdbms wird darauf hingewiesen, dass es nur zu testzwecken zu gebrauchen ist und niemals in produktiven einsatz. das pauschale ablehnen ist eine unart, die durch solche beiträge wie von dir immer wieder nahrung findet.

            *gerade* das pauschale Ablehnen von "SELECT *" ist eine Notwendigkeit in einem Fachforum wie diesem hier. Erst wenn jemand verinnerlicht hat, dass man das nicht macht, und auch darüber hinaus hervorragende Kenntnisse bezüglich Datenbanken besitzt, kann er im Einzelfall bewusst(!) entscheiden, dass "*" selektiert wird. Bis zu diesem Zeitpunkt ist und bleibt es ein Fehler.

            oder mit deinen eigenen worten ausgedrückt, erst denken, dann bei zweifel die doku konsultieren, dann erst den mund aufmachen. oder eben diplomatischer wie es dedlfix ausgedrückt hat, wo sind deine argumente ?

            Wenn Du diese nicht kennst, hast Du noch genug zu lernen. Beispielsweise dass das Vorhandensein einer Möglichkeit, *egal* wie gut spezifiziert und dokumentiert ist, absolut keine Rechtfertigung für ihren Einsatz ist.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes