Ankündigung

Einklappen
Keine Ankündigung bisher.

Kombination von mysqli_fetch_object und mysqli_fetch_assoc

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kombination von mysqli_fetch_object und mysqli_fetch_assoc

    Hallo, nach der Umstellung von php 5.6 auf 7.2 funktioniert bei meinem Skript leider nicht mehr die Datenabfrage mittels Kombination aus mysqli_fetch_object und mysqli_fetch_assoc.
    Ich habe eine Tabelle "termine" mit folgenden Feldern: id, termin, meier, schulze, lehmann, mueller, ...

    Die Feldnamen weise ich mit folgender Abfrage den Variablen $rec[] zu. Die Ausgabe klappt auch.
    $query = "SHOW COLUMNS FROM termine";
    $result = mysqli_query($link, $query) or die ("Query failed1");
    while ($rec = mysqli_fetch_assoc($result)){
    printf ("Var1 %s\n", $rec["Field"]);
    }

    Im nächsten Schritt möchte ich auf den Inhalt der Spalten (meier, schulze, lehmann, mueller, ...) zugreifen.
    $query_t = "SELECT * FROM termine WHERE termin = '2019-04-29'";
    $result_t = mysqli_query($link, $query_t) or die ("Query failed anzahl");
    if(mysqli_num_rows($result_t)>0){
    $row_t = mysqli_fetch_object($result_t);
    printf ("Var2 %s\n", $rec["Field"]);
    printf ("Var3 %s\n", $row_t->$rec["Field"]);
    }

    Das hat bis jetzt auch immer funktioniert. Jetzt liefert $row_t->$rec["Field"] nur noch Null.
    $rec["Field"] solo liefert u.a. meier.
    Und wenn ich $row_t->meier eingebe, bekomme ich den gewünschten Inhalt.

    Gibt es bei php 7 irgendwelche Besonderheiten? Hat das was mit den Klassen zu tun? Für Tipps wäre ich euch sehr dankbar.

  • #2
    https://www.php.net/manual/en/migrat...dling.indirect

    PHP-Code:
    $row_t->$rec["Field"
    wird in PHP7 als

    PHP-Code:
    ($row_t->$rec)["Field"
    interpretiert. Du musst also:

    PHP-Code:
    $row_t->{$rec["Field"]} 
    nutzen.

    Dein Tabellenlayout sieht aber eher suboptimal aus, so nebenbei. Mit einem gescheiten Layout müsstest du wahrscheinlich nicht so eine Konstruktion veranstalten.

    Kommentar


    • #3
      Vielen Dank für deinen Hinweis und auch den Link zum entsprechenden Doku-Kapitel. Damit funktioniert es! Jetzt klemmt es zwar noch an einer anderen Stelle, aber hier erhalte ich erst einmal den richtigen Feldinhalt.
      Das Tabellenlayout habe ich "vererbt" bekommen. Ich hätte es wahrscheinlich auch anders gelöst, wollte jetzt aber "nur" das vorhandene Skript von php 5 auf 7 heben. Na ja, das hatte ich mir einfacher vorgestellt.

      Kommentar

      Lädt...
      X