Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    117

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

    Ciao a tutti
    Sto provando ad imparare quindi vi prego di avere un po' di pazienza...
    Con un'operazione di "collage" ho costruito un codice per estrarre dati da una tabella del DB sulla scorta di un dato inviato via "POST":
    codice:
    <?php
    // connessione a MySQL con l'estensione MySQLi
    $mysqli = new mysqli("localhost", "root", "", "prova");
    // verifica dell'avvenuta connessione
    if (mysqli_connect_errno())
        {
               // notifica in caso di errore
            echo "Errore in connessione al DBMS: ".mysqli_connect_error()."<br/>";
               // interruzione delle esecuzioni i caso di errore
            exit();
        }
    else {
               // notifica in caso di connessione attiva
            echo "Connessione avvenuta con successo\n<br/>";
    }
    
    // estraggo i dati dal POST
    $Reg = $_POST['Regione'];
    # estrarre risultati con il metodo mysqli_result::fetch_array
    // query argomento del metodo query()
    $query = " SELECT * FROM Uffici WHERE Regione = $Reg";
    echo $query."<br/>";
    // esecuzione della query
    $result = $mysqli->query($query);// conteggio dei record restituiti dalla queryif($result->num_rows >0)
    If ($result == "False") echo "Query fallita\n<br/>" ;
    else echo "Query riuscita\n<br/>";
    // generazione di un array numerico
      while($row = $result->fetch_array(MYSQLI_NUM))
      {
       echo $row[0];
       echo "<br>";
      }
    // liberazione delle risorse occupate dal risultato
    $result->close();
    // chiusura della connessione
    $mysqli->close();
    ?>
    Il problema è che mi dà questo errore:
    Fatal error: Call to a member function fetch_array() on a non-object in C:\xampp\htdocs\ProveCodice\AccessoDB.php on line 36
    Come vedete ho inserito qualche "echo" per verificare l'effetto della query e sembra tutto ok ... ma poi non funziona
    Potete aiutarmi ad individuare l'errore?

    Grazie in anticipo per le risposte

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Prima cosa.

    Codice PHP:
    If ($result == false) echo "Query fallita\n<br/>" 
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    117
    Ciao Badaze
    grazie della correzione (e dire che sul manuale c'era precisato di non usare apici).
    Il fatto è che prima di avvicinarmi al php (da circa un mese) avevo sempre e solo usato VBA (e lì gli apici ci vogliono).

    Comunque venendo al codice che ho postato, anche applicando la tua correzione la query risulta riuscita ma (ovvimante) continua a comparire l'errore.
    Per ulteriore riscontro ho anche provato ad usare questo codice:
    codice:
    If (!$result == false) echo "Query riuscita\n<br/>" ;
    Ora, se la query è riuscita, come è possibile che $result non sia un oggetto?
    Quali test posso fare?

  4. #4
    Utente di HTML.it L'avatar di joker06
    Registrato dal
    Dec 2006
    Messaggi
    782
    Sicuro che la query trovi qualcosa?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    117
    Quote Originariamente inviata da joker06 Visualizza il messaggio
    Sicuro che la query trovi qualcosa?
    Il primo test l'ho fatto più o meno con lo stesso codice ma in un solo file (senza post) e funzionava (nel senso che restituiva il contenuto della query)
    Non so se integrando il codice ho sbagliato qualcosa.
    Come posso verificare?

  6. #6
    Utente di HTML.it L'avatar di joker06
    Registrato dal
    Dec 2006
    Messaggi
    782
    guarda quante righe ti tira fuori dalla query hai gia la num rows pronta levagli il commento

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    117
    Ho fatto come suggerivi e sembra che la query non restituisca righe.
    Ho usato questo codice:
    codice:
    if($result->num_rows >0) echo $result->num_rows;
    else echo "Nessuna riga ottenuta";
    If (!$result == false) echo "Query riuscita\n<br/>";
    mi ha restituito questo:
    Notice: Trying to get property of non-object in C:\xampp\htdocs\ProveCodice\AccessoDB.php on line 33
    Nessuna riga ottenutaQuery riuscita
    Fatal error: Call to a member function fetch_array() on a non-object in C:\xampp\htdocs\ProveCodice\AccessoDB.php on line 37
    Ora cerco di fare un passo indietro e tornare al vecchio codice (che purtroppo non ho lasciato salvato) che in un unico file mi restituiva correttamente i dati.

  8. #8
    Utente di HTML.it L'avatar di joker06
    Registrato dal
    Dec 2006
    Messaggi
    782
    $query =" SELECT * FROM Uffici WHERE Regione = $Reg";

    se non ricordo male se $reg è una stringa va tra ' ' però se qualcuno è piu informato di me ...

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    117
    Quote Originariamente inviata da joker06 Visualizza il messaggio
    $query =" SELECT * FROM Uffici WHERE Regione = $Reg";

    se non ricordo male se $reg è una stringa va tra ' ' però se qualcuno è piu informato di me ...
    Hai perfettamente ragione!
    Me ne sono accorto quando ho provato a scrivere direttamente la query ed ho notato la differenza con quella scritta via codice.
    Ho corretto ed ora funziona.
    Grazie.

  10. #10
    Utente di HTML.it L'avatar di joker06
    Registrato dal
    Dec 2006
    Messaggi
    782
    Ottimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.