Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Cannot use object of type mysqli_result as array

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Cannot use object of type mysqli_result as array

    Ich habe eine Funktion für Datenbankabfragen.

    Das Ergebniss soll in ein array:
    PHP-Code:
    private function makeArrayResult($ResultObj)
        {
            if(
    $ResultObj === false)
            {
                
    //ein fehler ist aufgetreten
                
    $this->lastSQLStatus false;
                return 
    false;
            }
            else if(
    $ResultObj === true)
            {
                
    //Abfrage erfolgreich aber ohne Ergebniss bsp. UPDATE
                
    $this->lastSQLStatus true;
                return 
    true;
            }
            else if(
    $ResultObj->num_rows == 0)
            {    
                
    //Abfrage erfolgreich mit leerem Ergebniss bsp. (SELECT = 0)
                
    $this->lastSQLStatus true;
                return array();
            }
            else
            {
                
    //Abfage erfolgreich Ergebniss wird in ein Array geschrieben
                
    $array = array();
                while(
    $line $ResultObj->fetch_array(MYSQL_ASSOC))
                {
                    
    array_push($array$line);
                }
                
    $this->lastSQLStatus true;
                return 
    $array;
            }
        } 
    Hier nutze ich die Funktion. Bzw. in der Schleife bricht der Code ab,:
    PHP-Code:
        public function _read($sesID)
        {
            
    $sessionStatement "SELECT * FROM sessions WHERE id = '$sesID'";
            
    $result $this->DB->query($sessionStatement);
            
            if(
    $result === false)
            {
                return 
    '';
            }
            
            if(
    count($result) > 0)
            {
                return 
    $result[0]["value"]; <------ Zeile 49
            
    }
            else
            {
                return 
    '';
            }
        } 
    und bekomme diese Fehlermeldung
    Code:
    Fatal error: Cannot use object of type mysqli_result as array

    Wieso kann er es nicht mehr als array nutzen?
    Oder liegt das Problem wo anders und ich sehe es nur nicht?

  • #2
    Na dann schlag mal nach was mysqli 's query-methode als result liefert und danach überleg mal obs sinnvoll ist ein "object to array" converter zu basteln wenn du ihn nicht nutzt ^^

    Kommentar


    • #3
      Also das Problem ist gelöst.
      Die Tabelle heisst "session" und nicht "sessions".

      Totaler Blödsinn
      Ich war mit der falschen Datenbank verbunden.
      Nun bin ich mit der richtigen verbunden und der fehler sit wieder da.

      Kommentar


      • #4
        dann lies bitte nochmal die Antwort von tr0y ,.,,,


        du zeigst uns im oberen Script-Block den Code, der korrekt ein mysqli-Result per fetch-Array holt ...

        aber im unteren Code-Block benutzt du diesen Code gar nicht - du schickst die Abfrage zur Datenbank und greifst dann direkt auf das mysqli-result im Array-Kontext zu - dafür musst du aber zuerst das Ergebnis mal fetchen ...oder du benutzt deinen selbst geschriebenen Code aus dem ersten Block - dafür ist der doch da, dachte ich

        wenn das geht .. versuch es mal mit

        PHP-Code:
        $result $this->DB->makeArrayResult($this->DB->query($sessionStatement)); 
        ich würd dir aber vorschlagen, dass es günstiger erscheint, wenn deine makeArrayResult-Methode SELBST die Query an die Datenbank schickt

        Kommentar


        • #5
          oder ein eigener Result-Decorator:

          PHP-Code:
          $result $this->DB->query($dingens)->asArray();
          $result $this->DB->query($dingens)->asResultObject(); 
          oder statt die Datenbanken durch den ganzen Object-Complex zu routen:
          PHP-Code:
          $result Database::query($dingens)->asArray();
          $result Database::query($dingens)->asResultObject(); 

          Kommentar


          • #6
            So jetzt hab ich den fehler gefunden:
            PHP-Code:
            public function query($sqlQuery$resultset false)
                {
                    
            $this->lastSQLQuery $sqlQuery;

                    
            $result $this->MySQLiObj->query($sqlQuery);

                    if(
            $resultset == true); <------dA ist er
                    
            {
                        if(
            $result == false)
                        {
                            
            $this->lastSQLStatus false;
                        }
                        else
                        {
                            
            $this->lastSQLStatus true;
                        }
                        return 
            $result;
                    }
                    
            $return $this->makeArrayResult($result);
                    return 
            $return;
                } 
            in der function query ist der fehler versteckt.

            Ohne dieses semikolon funktioniert alles reibungslos.

            Kommentar

            Lädt...
            X