Ankündigung

Einklappen
Keine Ankündigung bisher.

Fatal error: Unsupported operand types

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

  • Fatal error: Unsupported operand types

    Hi @all

    eigentlich handelt es sich hierbei um eine einfache Abfrage einer MySQL DB. Jedoch kann ich den Fehler im Code nicht finden. Muss dazu sagen das der Code aus einem Listing eines PHP Einsteigerbuches* stammt.

    Also da der Code:
    Code:
    // Datensatz-Ausgabe festlegen
    $sql_befehl = "SELECT * FROM infoContent";
    
    if ($resultat = $db->query($sql_befehl)) {
      // Datensatzzeile als Array übergeben
        while ($datensatz = $resultat->fetch-array()) {  <--- Diese Zeile soll Fehlerhaft sein
              extract($datensatz);
              echo "
                   $Text
                   ";
        }
    } else {
    
    echo "Fehler";
    }
    Ausgabe:
    Fatal error: Unsupported operand types in

    * M+T Webseiten mit PHP5 und MySQL5 Seite 271 wenn das jemand hat und kennt.

    Bedanke mich schon mal für eure Hilfe!

    Gruß
    Mafra



  • #2
    Zitat von mafra Beitrag anzeigen
    Ausgabe:
    Fatal error: Unsupported operand types in
    Ausgerechnet der wichtige Teil der Ausgabe fehlt. Da steht eine Zeilenangabe. Nachreichen und entsprechende Zeile markieren bitte.

    Kommentar


    • #3
      RE:

      Sorry, habe ich natürlich sofort nachmarkiert. Danke schon mal für deine Antwort

      Fehlerhafte Zeile:
      while ($datensatz = $resultat->fetch-array())

      Kommentar


      • #4
        Ohne die konkrete Zeile wird es schwierig, aber ich kann ja mal ne Vermutung anstellen:

        Benutzt du PDO um auf die Datenbank zuzugreifen? Oder hast du dir selber ne Klasse geschrieben, die die Funktionen query() und fetch-array() enthält?
        Es gibt meines Wissens nämlich keine offizielle Funktion von PHP, die "fetch-array()" heisst, nur "fetch_array()", aber bei PDO wäre es sowieso nur "fetch()".

        Aber ist nur ein Schuss ins Blaue!

        EDIT: Ok, dann könnte es wohl sogar an dem fetch-array() liegen *grins* Oder du musst der Funktion noch einen Parameter übergeben, aber da ich nicht weiss, welche Funktion du verwenden wolltest, ist das auch nur geraten...

        Kommentar


        • #5
          vermutlich fetch_array. Der Bindestriche wird als Minus-Operator interpretiert.

          Kommentar


          • #6
            Zitat von David Beitrag anzeigen
            vermutlich fetch_array. Der Bindestriche wird als Minus-Operator interpretiert.
            Danke euch, genau das war es wie ich es geahnt habe ein absolut dummer Fehler. Und ich bin dieses bisschen Code Gestern,wer weiß wie oft, durchgegangen. Danke für die schnelle Hilfe.

            Kommentar


            • #7
              Noch mal Thread aus der Versenkung hol!

              Code:
              <?php
              // Config File
              include 'include/config.inc.php';
              // Verbindung zur Datenbank
              include 'include/dbconnect.inc.php';
              // Datensätze bearbeiten
              $sql_befehl = "
              UPDATE staticContent
              SET Text = "$_POST['Text']",
              DateUpdate = "$_POST['DateUpdate']",
              Ersteller = "$_POST['Ersteller']"
              WHERE ID = "$_POST['ID']"
              ";
              if ($db->query($sql_befehl)) {
               // Bei Erfolg
              echo "Anazhl der geänderten Datensätze:" .$db->affected_rows;
              } else {
               // Bei Fehler
              echo "Fehler";
              }
              ?>
              Ich muss euch nochmal um Hilfe bitten. Nach dem ich nun versuchen möchte eingelesene Datensätze per Update zu ändern, bekomme ich eine nette Fehlermeldung.
              Code:
              Parse error: syntax error, unexpected T_VARIABLE in /opt/lampp/htdocs/dev-web/testObjekte/updateContent.php on line 10
              So nun ich habe mir verschiedene Fälle mit google gesucht um evtl. Lösungsansätze umzusetzen.Bisher jede Änderung von " in ' und umgekehrt hat nichts bewirkt. Ich kann auch an $_POST ['Variable'] nichts falsches erkennen. Jedoch fehlt mir doch die Erfahrung um solche Fehlerteufel zu finden.
              Ich danke euch schon mal!

              Gruß Mafra

              Kommentar


              • #8
                Also dieser Query ist total verkorkst....
                Ein paar Hinweise:
                Wenn du Texte speichern willst, müssen die im Query immer zwischen einfachen Anführungszeichen ' oder solchen ´ sein (ich bevorzuge einfache Anführungszeichen).
                Variablen können grundsätzlich einfach direkt in den Query geschrieben werden, das gilt aber leider nicht für assoziative Arrays, da dort die ' bzw " (was man auch immer verwendet) vom Query zuerst geparst und verarbeitet werden und erst danach versucht wird, der Variableninhalt einzufügen.

                Der Query sollte schlussendlich also folgendermassen aussehen:
                Code:
                $sql_befehl = "
                UPDATE staticContent
                SET Text = '".$_POST['Text']."',
                DateUpdate = ".$_POST['DateUpdate'].",
                Ersteller = '".$_POST['Ersteller']."'
                WHERE ID = ".$_POST['ID']."
                ";
                Ich habe überall, wo ein Text eingefügt wird ' drum rum gemacht und alle Variablen escapt (sprich ".$variable."). Ich würde sowieso empfehlen alle Variablen in echos und Queries etc zu escapen, dann hast du in einem Editor mit Syntax Highlighting eine viel bessere Übersicht, wo eine Variable vorkommt und wo nicht. Ist aber natürlich Geschmackssache.

                Kommentar

                Lädt...
                X