Visualizzazione risultati 1 fino 5 di 5

Discussione: Fatal error: Call to a member function fetch_array() on a non-object

  1. #1
    Guest

    Question Fatal error: Call to a member function fetch_array() on a non-object

    Ciao a tutti vorrei una mano per capire dov'è l'errore in questo script

    Codice PHP:
    public function query(){
    if(isset(
    $this->query)){
    //execute prepared query and store in result variable
    $this->result = $this->connection->query($this->query);
    return
    TRUE;
    }
    return
    FALSE;
    }


    /*fetch a row from the query result
    *@param $type
    */
    public function fetch($type = 'object'){

    if(isset(
    $this->result)){

    switch(
    $type){

    case(
    'object'):
    //fall through...
    default:
    //fetch a row as object
    $row = $this->result->fetch_object();
    break;

    case(
    'array'):
    //fetch a row as array
    $row = $this->result->fetch_array();
    break;

    }
    return
    $row;
    }
    return
    FALSE;
    }
    come da titolo del topic, l'errore che mi segnala php è "Fatal error: Call to a member function fetch_array() on a non-object in... riga 83", dove riga 83 è

    Codice PHP:
    $row = $this->result->fetch_array();
    Ultima modifica di frigo : 16-02-2013 alle ore 23.04.51

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Quell'errore ti dice che $this->result non contiene un oggetto, ma un valore di un altro tipo. Controlla cosa c'è dentro (e.g., var_dump()) e scopri come ci finisce.

  3. #3
    Guest

    Predefinito

    inanzitutto grazie per esserti interessato.
    allora ho messo il var_dump() nel '$this->result':

    Codice PHP:
    $this->result = var_dump($this->connection->query($this->query));
    il browser mi dice 'bool(false)'...
    vuol dire che in pratica non esiste?

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    var_dump() non è una funzione che restituisce un risultato: hai dato un'occhiata alla documentazione?

    bool(false) vuol dire che c'è dentro un valore false, che è di tipo booleano (vero/falso). Ora devi scoprire come c'è finito: magari hai chiamato una funzione con i parametri sbagliati. Altra documentazione da leggere
    Ultima modifica di dreadnaut : 17-02-2013 alle ore 19.20.03

  5. #5
    Guest

    Predefinito

    forse mettere il codice per intero può aiutare quei pochi non-pigroni che hanno pazienza di mettersi a leggerlo

    Codice PHP:
    <?php
    class MysqlImproved_Driver extends Database_Library {

    private
    $connection;

    private
    $query;

    private
    $result;

    //connessione al database
    public function connect(){

    $host = 'localhost';
    $user = 'root';
    $password = '';
    $database = 'my_test';

    $port = NULL;
    $socket = NULL;

    //connessione mysqli
    $this->connection = new mysqli($host, $user, $password, $database, $port, $socket);

    return
    TRUE;

    }

    //funzione per la disconnessione
    public function disconnect(){
    $this->connection->close();
    return
    TRUE;
    }

    /* prepara la query da eseguire
    * @param $query
    */
    public function prepare($query){
    $this->query = $query;
    return
    TRUE;
    }

    //esegue la query preparata
    public function query(){
    if(isset(
    $this->query)){
    //esegue la query e la mette in una variabile
    $this->result = $this->connection->query($this->query);
    return
    TRUE;
    }
    return
    FALSE;
    }

    /*analizza il parametro passato nella query
    * @param $type
    */
    public function fetch($type = 'object'){

    if(isset(
    $this->result)){

    switch(
    $type){

    case(
    'array'):
    //fetch a row as array
    $row = $this->result->fetch_array();
    break;

    case(
    'object'):
    default:
    //fetch a row as object
    $row = $this->result->fetch_object();
    break;

    }
    return
    $row;
    }
    return
    FALSE;
    }

    }
    Ultima modifica di dreadnaut : 17-02-2013 alle ore 20.16.23 Motivo: - password

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •