PHP mysqli_fetch_object dynamisch kann nicht zum String konvertiert werden

  • PHP

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von GCAsk.

    PHP mysqli_fetch_object dynamisch kann nicht zum String konvertiert werden

    Guten Tag,

    in PHP habe ich eine Datenbankabfrage, welche allerdings nur bestimmte Spalten (abhängig von den Nutzereinstellungen) anzeigen soll.
    Daher generiere ich die entsprechenden Spaltennamen dynamisch.

    Nun versuche ich via $auslesen->$spaltenname mir das entsprechende Resultat auszugeben.

    Allerdings kann die Variable wohl nicht richtig konvertiert werden.

    Mein Vorhaben kurz und knackig:
    Aktive Spaltennummer auslesen und speichern, ein "c" hinzufügen (z.B. c2 -> Spaltenname aus der Datenbank).
    Nun entsprechende Spalte auslesen und ausgeben.

    Hier mein Code:

    PHP-Quellcode

    1. <?php
    2. mysqli_set_charset($conn,'utf8');
    3. $getvalues = mysqli_query($conn, "SELECT * FROM Tabelle");
    4. while($getval = mysqli_fetch_object($getvalues)){
    5. $getactive = mysqli_query($conn, "SELECT columnNo FROM columnActive WHERE username='User'");
    6. while($active = mysqli_fetch_object($getactive)){
    7. echo "<tr>";
    8. $column = "c" . (string)$active->columnNo;
    9. echo "<td>$getval->$column</td>";
    10. echo "</tr>";
    11. }
    12. }
    13. ?>


    Erhalten tue ich immer folgende Meldung:

    Catchable fatal error: Object of class stdClass could not be converted to string

    Das (string) habe ich nachträglich hinzufügt, auch damit geht es nicht. Auch bei $getval->$column vorher ein (string) zu machen, bringt nichts.
    var_dump($column) gibt mir string(2) "c2" zum Beispiel aus

    Über eine Lösung wäre ich euch unendlich dankbar!
    Habe das Problem lösen können. Habe das $getval nochmal in eine seperate Variable gepackt, diese wieder zum String konvertiert und mir dann nur noch die Variable ausgeben lassen.

    Es kann manchmal so einfach sein ^^

    Bitte aber noch offen lassen, falls ich weitere Probleme/Fragen haben sollte

    @3daycliff ich weiß, war erstmal nur schnell hingebastelt. Werde ich dann noch optimieren. Hauptsache es funktioniert erstmal.
    Gedenke da an INNER JOIN, um es später zu optimieren. So erspare ich mir die eine while Schleife, die extrem inperformant ist

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „GCAsk“ ()

    ... PDO ist einfach viel geiler. Wieso trauen sich die Leute nicht das zu benutzen? Fällt mir äußerst häufig auf. Gut, mysqli ist "ok" und definitiv besser als der mysql_* Schrott. Trotzdem. Wenn's im MediaMarkt die PS4 zum gleichen Preis wie ne PS3 geben würde, würde man doch auf die 4er holen. Aber jeder wie er mag, ich weiß, der Ratschlag PDO zu verwenden stößt oft auf Unverständnis (was wiederum mir unverständlich ist), daher soll das jetzt auch keine Diskussion losreißen.

    Ja das mit den JOINs ist ne gute Idee. Aber vielleicht nimmst du ja @3daycliffs Vorschlag an und postest mal ausschnittweise deine Datenbankstruktur. Dein Code kann so gut sein wie er will, wenn das Datenbankdesign schon verhunzt ist, kannst du auch mit schönem Code nix kompensieren (damit unterstelle ich nicht dass du keine Datenbankstruktur anlegen kannst, das ist mehr als Angebot gemeint dass wir wenn du es magst gern mal drüberschauen können).

    Schau auch dass du ein bissl Exceptionhandling betreibst. Gut, selbst wenn jetzt die Abfrage keine Ergebnisse liefert kommt es nicht zu einem Fehler, aber dass du wenigstens vor dem Durchlaufen der Ergebnisse prüfst ob es überhaupt welche gibt. $getactive->num_rows bzw. bei PDO $getactive->rowCount(). Auf count(...) oder empty(...) würde ich verzichten.

    Link :thumbup:
    Hello World

    Link schrieb:

    ... PDO ist einfach viel geiler. Wieso trauen sich die Leute nicht das zu benutzen? Fällt mir äußerst häufig auf. Gut, mysqli ist "ok" und definitiv besser als der mysql_* Schrott. Trotzdem. Wenn's im MediaMarkt die PS4 zum gleichen Preis wie ne PS3 geben würde, würde man doch auf die 4er holen. Aber jeder wie er mag, ich weiß, der Ratschlag PDO zu verwenden stößt oft auf Unverständnis (was wiederum mir unverständlich ist), daher soll das jetzt auch keine Diskussion losreißen.

    PDO hat sicher einige Vorteile. Ich denke, ich bin mysql(i) einfach zu sehr gewohnt. Wenn ich mehr Zeit habe und auch "erfahrener" bin, werde ich mir sicherlich auch mal PDO aneignen. Es ist halt immer ein Umstieg, auch wenn er vielleicht sogar gar nicht allzu schwierig sein wird.

    Link schrieb:

    Ja das mit den JOINs ist ne gute Idee. Aber vielleicht nimmst du ja @3daycliffs Vorschlag an und postest mal ausschnittweise deine Datenbankstruktur. Dein Code kann so gut sein wie er will, wenn das Datenbankdesign schon verhunzt ist, kannst du auch mit schönem Code nix kompensieren (damit unterstelle ich nicht dass du keine Datenbankstruktur anlegen kannst, das ist mehr als Angebot gemeint dass wir wenn du es magst gern mal drüberschauen können).

    Die Datenbankstruktur ist mehr oder weniger nicht frei wählbar, da ich die Aufgabe hier habe, dass man eine Excel Datei direkt importieren kann ohne größere Veränderungen. Daher die etwas komische Struktur. Mal sehen.

    Link schrieb:

    Schau auch dass du ein bissl Exceptionhandling betreibst. Gut, selbst wenn jetzt die Abfrage keine Ergebnisse liefert kommt es nicht zu einem Fehler, aber dass du wenigstens vor dem Durchlaufen der Ergebnisse prüfst ob es überhaupt welche gibt. $getactive->num_rows bzw. bei PDO $getactive->rowCount(). Auf count(...) oder empty(...) würde ich verzichten.

    Danke für Deinen Tipp. Ist in dem Fall aber nicht nötig, da eine Prüfung wo anders erfolgt und mir bei keinen Ergebnissen in der Tabelle angezeigt wird, dass keine Ergebnisse gefunden werden konnten.