Scar: Mysql, PHP, affected_rows

hallo,

in einem script ändere ich den wert einer spalte in einer sehr kleinen tabelle (5 einträge).

nach dem update frage ich über affected_rows die geänderten zeilen ab und bekomme aus einem mir unbekannten grund ein leeres ergebnis zurück.

in einem select auf den wert dieser spalte wird aber ganz klar eine änderung ausgegeben. der wert wird also geändert, affected_rows liefert aber ein falsches ergebnis.

kennt jemand dieses problem und weiss einen rat um es zu lösen?

danke im vorraus,

chris

  1. Hello,

    hab erst gestutzt wg. Chris. Unserer ist nämlich noch nicht wieder online...

    Aber zur Frage: Wie Du die Abfrage gemacht?
    Mit PHP oder mit dem phpMyAdmin oder wie sonst?

    Das ist wesentlich.

    mysql_affected_rows(), mysql_num_result(), mysql_insert_id() usw. müssen innerhalb derselben Connection ablaufen. Der phpMyAdmin baut aber ggf. für jedes Statement eine neue auf.

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. echo $begrüßung;

      Der phpMyAdmin baut aber ggf. für jedes Statement eine neue auf.

      "ggf." bedeutet hier, dass phpMyAdmin dies macht, wenn man den Befehl absendet, sich das Ergebnis ansieht, und dann einen weiteren Befehl absendet usw. usf.
      Schickt man mehrere Statements durch ; getrennt in einem SQL-Befehlseingabefeld ab werden sie von phpMyAdmin innerhalb einer Connection abgearbeitet.

      echo "$verabschiedung $name";

      1. das problem hab ich inzwischen gefunden... durch die verbindung zu zwei datenbanken will mysql_affected_row die db kennung mit genannt bekommen, ansonsten greift es auf die zuletzt instanzierte db verbindung zu. warum auch immer das so ist, ist das problem damit gelöst. :)

        grüße Chris

        1. echo $begrüßung;

          das problem hab ich inzwischen gefunden... durch die verbindung zu zwei datenbanken will mysql_affected_row die db kennung mit genannt bekommen, ansonsten greift es auf die zuletzt instanzierte db verbindung zu. warum auch immer das so ist, ist das problem damit gelöst. :)

          Weil es PHP den Anwendern mal wieder einfach machen möchte ist die Angabe der Verbindungskennung optional. In einer großen Zahl der Fälle wird nur eine Datenbankverbindung aufgebaut und da merkt sich PHP diese dann großzügigerweise. Siehe Handbuch-Kapitel MySQL Functions im Abschnitt Notes (kurz vor dem Beispiel)

          echo "$verabschiedung $name";

        2. Hello Chris,

          das problem hab ich inzwischen gefunden... durch die verbindung zu zwei datenbanken will mysql_affected_row die db kennung mit genannt bekommen, ansonsten greift es auf die zuletzt instanzierte db verbindung zu. warum auch immer das so ist, ist das problem damit gelöst. :)

          Na, dann lag ich ja nicht total daneben mit meiner Vermutung.
          Ich halte es im übrigen auch für eine Unsitte, die Verbindungskennung wegzulassen.

          Harzliche Grüße vom Berg
          http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau