Visualizzazione risultati 1 fino 15 di 15

Discussione: Call to a member function query()

  1. #1
    Guest

    Predefinito Call to a member function query()

    Ho scritto un applicazione la quale interroga il database, in locale funziona ma quando la hosto su altervista mi da l'errore
    Fatal error: Call to a member function query() on a non-object in /membri/tophost/lib/manager.php on line 10

    la stringa è

    Codice PHP:
    $result = $mysqli->query("SELECT * FROM ".$DBprefix."host", MYSQLI_USE_RESULT);
    dove $DBprefix è il prefisso della tabella.
    Ultima modifica di alemoppo : 07-01-2012 alle ore 17.52.11 Motivo: +tag [php]

  2. #2
    programator non è connesso Neofita
    Data registrazione
    11-11-2009
    Messaggi
    8

    Predefinito

    prova a fare:
    Codice PHP:
    mysqli_query($mysqli, "SELECT * FROM ".$DBprefix."host", MYSQLI_USE_RESULT);
    dove $mysqli
    è l'oggetto inizializato con:
    Codice PHP:
    $mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");
    Ultima modifica di alemoppo : 07-01-2012 alle ore 17.52.45 Motivo: +tag [php]

  3. #3
    Guest

    Predefinito

    Non funziona e comunque sia mi serve come variabile

  4. #4
    programator non è connesso Neofita
    Data registrazione
    11-11-2009
    Messaggi
    8

    Predefinito

    Citazione Originalmente inviato da tophost Visualizza messaggio
    Non funziona e comunque sia mi serve come variabile
    comunque è da fare così:

    Codice PHP:
    $result=mysqli_query($mysqli, "SELECT * FROM ".$DBprefix."host", MYSQLI_USE_RESULT);
    prova a vedere su questa pagina se riesci a far funzionare qualcosa:

    http://php.net/manual/en/mysqli.query.php
    Ultima modifica di alemoppo : 07-01-2012 alle ore 17.53.04 Motivo: +tag [php]

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Citazione Originalmente inviato da programator Visualizza messaggio
    comunque è da fare così:

    Codice PHP:
    $result=mysqli_query($mysqli, "SELECT * FROM ".$DBprefix."host", MYSQLI_USE_RESULT);
    Lui usa la programmazione ad oggetti, e non procedurale!

    Ciao!
    Ultima modifica di alemoppo : 07-01-2012 alle ore 17.53.23

  6. #6
    programator non è connesso Neofita
    Data registrazione
    11-11-2009
    Messaggi
    8

    Predefinito

    Adesso non so come è la facenda con php5, comunque per usare l'istruzione che vuoi devi avere php5 sul tuo server.

    Poi assicurati che $mysqli esista e che sia stato inizializzato correttamente.

    Forse sai già, però il nome dell'utente, la password e il nome del db su altervista sono diversi da quelli che usi sul tuo pc.

    il nome del utente, nel tuo caso dovrebbe essere: tophost
    password: è la stessa che usi per accedere su altervista
    nome db dovrebbe essere: my_tophost
    server: localhost

    poi , siccome vedo che ti sei registrato oggi e non so quanta esperienza tu abbia con queste cose e senza offesa, mi viene da chiederti se hai creato il database mysqli su altervista.
    Ultima modifica di programator : 07-01-2012 alle ore 18.31.33

  7. #7
    Guest

    Predefinito

    Mi sono registrato oggi poiché sto lavorando ad un progetto,
    poiché uno si è appena registrato non significa che sia un nabbo.
    Ad ogni modo l'applicazione è preconfigurata, in pratica compilo il modulo con tutte le informazioni apro e poi crea le tabelle, cosa che ho già controllato...
    Se Mi lasci un tuo indirizzo posso zipparlo ed inviartelo

  8. #8
    programator non è connesso Neofita
    Data registrazione
    11-11-2009
    Messaggi
    8

    Predefinito

    Citazione Originalmente inviato da tophost Visualizza messaggio
    Mi sono registrato oggi poiché sto lavorando ad un progetto,
    poiché uno si è appena registrato non significa che sia un nabbo.
    Ad ogni modo l'applicazione è preconfigurata, in pratica compilo il modulo con tutte le informazioni apro e poi crea le tabelle, cosa che ho già controllato...
    Se Mi lasci un tuo indirizzo posso zipparlo ed inviartelo
    Beh volevo solo essere sicuro, comunque, prova ad attivare php5, vai AlterSito > Gestione file Clicca sull'icona php5 in alto e sotto scegli la versione php su php5.3

    Dimmi se funziona così.

  9. #9
    Guest

    Predefinito

    Provato ma non funziona ne con 5.2 ne con 5.3 ....

  10. #10
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    L'errore è chiaro.
    O no esiste il metodo query nell'oggetto, oppure non è stato creato l'oggetto.

    -Sei sicuro di fare "new mysqli(, etc..."
    -Fai una semplice prova per vedere se fa una connessione o semplicemente non riesce
    http://www.php.net/manual/en/mysqli.connect.php
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  11. #11
    Guest

    Predefinito

    la connessione è OK altrimenti non avrebbe eseguito il setup per creare le tabelle

    EDIT:

    Ho trovato il problema allora:
    ho un file config.php con tutti i dati per accedere al database poi ho creato un altro file
    upload.php che include config poi ho ancora un altro file manager.php che a sua volta include upload.php e config.php

    Codice PHP:
    include 'upload.php';
    class
    Search
    {
    function
    Verifico_Limite()
    {
    global
    $mysqli,$DBprefix;
    $result = $mysqli->query("SELECT * FROM ".$DBprefix."host", MYSQLI_USE_RESULT);
    etc... etc...

    }
    }
    $mysqli e $DBprefix si trovano in config.php e li ho inclusi con la funzione global ora però queste due variabili risultano nulle...
    in locale funziona su altervista no come mai??
    Ultima modifica di alemoppo : 09-01-2012 alle ore 16.01.27 Motivo: Usa il tasto "Edita" +tag [php]

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da tophost Visualizza messaggio
    Ho trovato il problema allora:
    ho un file config.php con tutti i dati per accedere al database poi ho creato un altro file
    upload.php che include config poi ho ancora un altro file manager.php che a sua volta include upload.php e config.php

    Codice PHP:
    include 'upload.php';
    class
    Search
    {
    function
    Verifico_Limite()
    {
    global
    $mysqli,$DBprefix;
    $result = $mysqli->query("SELECT * FROM ".$DBprefix."host", MYSQLI_USE_RESULT);
    etc... etc...

    }
    }
    $mysqli e $DBprefix si trovano in config.php e li ho inclusi con la funzione global ora però queste due variabili risultano nulle...
    in locale funziona su altervista no come mai??

    Perché non è il modo corretto di procedere, evita a prescindere l'uso di global e affidati più all'ereditarietà degli oggetti, inoltre ti consiglio di definire $DBprefix come costante:

    Codice PHP:
    include 'upload.php';

    # Chiaramente è un esempio, crea questa costante in un luogo più appropriato.
    define('DB_PREFIX', $DBprefix);


    class
    Search extends mysqli
    {
    function
    Verifico_Limite()
    {
    $result = $this->query("SELECT * FROM ". DB_PREFIX ."host", MYSQLI_USE_RESULT);
    etc... etc...

    }
    }
    Ultima modifica di alemoppo : 09-01-2012 alle ore 16.02.43 Motivo: +tag[php] in messaggio quotato

  13. #13
    Guest

    Predefinito

    Ho solo un problema: non ho una classe mysqli ma solo il file config contenente i dati

    Codice PHP:
    <?php
    $sitetitle
    = "Esempio";
    $sitehost = "http://tophost.altervista.org/";
    $dirupload = "up/";

    $DBhost = "localhost";
    $DBuser = "tophost";
    $DBpassword = "";
    $DBname = "my_tophost";
    $DBprefix = "hot"; //facoltativo


    $AdminUsr = "Tizio";
    $AdminMail = "caio@email.it";

    $estensione_file = array("zip","jpg","pdf","png","exe","rar","iso","mp3");
    $limite_download = 100;

    $mysqli = new mysqli($DBhost,$DBuser,$DBpassword,$DBname);
    ?>
    posso cambiare le variabili in costanti e qui non ci piove ma come posso portare $mysqli in altre pagine senza l'uso di global??
    Ultima modifica di alemoppo : 09-01-2012 alle ore 16.03.23 Motivo: [QUOTE] -> [PHP]

  14. #14
    Guest

    Predefinito

    Citazione Originalmente inviato da tophost Visualizza messaggio
    Ho solo un problema: non ho una classe mysqli ma solo il file config contenente i dati
    La classe mysqli è presente in php5 di default, non devi crearla tu (tant'è che ti restituirebbe un errore se provassi ad istanziare una classe con lo stesso nome).

  15. #15
    Guest

    Predefinito

    Ho risolto.... ho buttato 5 giorni per capire cos'era e alla fine era un semplice studio include... bastava modificare una stringa...
    questa è una delle cose che ti fa riflettere su quanto sei stupido, ad ogni modo grazie a tutti.
    Ultima modifica di tophost : 12-01-2012 alle ore 17.33.24

Regole di scrittura

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