Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 40
  1. #1

    class test extends mysqli per personalizzarne esecuzione

    Ciao a tutti, volevo personalizzare l'esecuzione della query,
    in modo da non dover ripetere tutta una serie di comandi ogni volta.

    ho perciò creato una classe e fatto la seguente funzioni.. in cui c'è sicuramente un erroraccio visto che non va.

    codice:
    class panda extends mysqli 
    {
    //da usare al posto di mysqli->query
    	public function my_mysqli_query($query)
    	{ 
    		$rs = parent::query($query) or die("<h3>ERRORE MYSQL</h3>LINEA : ".__LINE__."
    QUERY : ".$query." 
     ERROR : ".parent::error);	
    		return $rs;
    	}
    questo l'errore:
    codice:
     
    Warning:  mysqli::query() [mysqli.query]: invalid object or resource panda
     in D:\LAVORI\EasyPHP-5.3.8.1\www\sito.it\class\test.class.php on line 42
    
    
    
    Fatal error:  Undefined class constant 'error' in D:\LAVORI\EasyPHP-5.3.8.1\www\sito.it\class\test.class.php on line 42
    qualcuno sa dirmi quale?

  2. #2
    Ciao.
    Penso che l'errore non viene generato dal frammento di codice che hai postato, anche perche se sarebbe fallita la query ti avrebbe stampato il messaggio d'errore che avevi settato nel or die..., e poi l'errore lo da nella riga 42 di un file chiamato test.class.php.
    Dovresti postare un po di codice in più ed essere più dettagliato
    Ho una logica tutta mia, fatta di if else ...

  3. #3
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Il codice fallisce stai cercando di accedere al metodo in modo errato.
    Hai provato a modificare il codice da così:
    Codice PHP:
    class panda extends mysqli 
    {
    //da usare al posto di mysqli->query
        
    public function my_mysqli_query($query)
        { 
            
    $rs parent::query($query) or die("<h3>ERRORE MYSQL</h3>LINEA : ".__LINE__."
    QUERY : "
    .$query.
     ERROR : "
    .parent::error);    
            return 
    $rs;
        }

    a così

    Codice PHP:
    class panda extends mysqli 
    {
    //da usare al posto di mysqli->query
        
    public function my_mysqli_query($query)
        { 
            
    $rs $this->query($query) or die("<h3>ERRORE MYSQL</h3>LINEA : ".__LINE__."
    QUERY : "
    .$query.
     ERROR : "
    .parent::error);    
            return 
    $rs;
        }

    Potresti anche farmi vedere come stai usando la tua classe?

  4. #4
    la pagina test.class.php è appunto la pagina in cui ho creato la class panda extends mysqli

    la riga 42 è quella postata.. e si riferisci esattamente a

    codice:
    $rs = parent::query($query) or die("<h3>ERRORE MYSQL</h3>LINEA : ".__LINE__."
    QUERY : ".$query." 
     ERROR : ".parent::error);
    ma è corretto usare "parent::" ?



    l'errore viene generato richiamando la funzione in un'altra pagina... in cui c'è:

    codice:
    /* le mie funzioni */
    include_once('../../class/test.class.php');
    
    $mysqli = new panda(HOST, USERNAME, PASSWORD, DATABASE);
    
    $query_utenti_upd = "UPDATE `tbl_utenti` SET `codice`= '".$codiceutente."' WHERE `idtbl_utenti` =".$id_utente;
    	$mysqli->my_mysqli_query($query_utenti_upd);

  5. #5
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    1. Ho scritto una boiata, il metodo la chiami correttamente, parent:: va benissimo solo che nel contesto specifico per leggibilità è meglio usare $this parent è preferibile usarlo in contesti ambigui per esempio, ma tendenzialmente sono pure preferenze.
    Codice PHP:
    class panda extends mysqli  

        public function 
    query($query)
        {
            
    // your code
        
    }
        public function 
    my_mysqli_query($query
        {  
            
    $rs parent::query($query);
            
    $rs $this->query($query);
        }

    Il motivo per cui ti da errore sembrerebbe dovuto al fatto che php non riesce a trovare mysqli. Sei sicuro che sia installato?

  6. #6
    Penso che l'errore sia dovuto dal fatto che non vi è un instanza di Mysqli.
    In pratica cerca di accedere ad un metodo non instanziato, infatti rileggendo l'errore, lui si riferisce ad una costante di classe che non riesce a trovare
    codice:
    parent::error
    , prova ad istanziare il costruttore di Mysqli nel costruttore della classe panda, e successivamente utilizzi l'oggetto, invece di utilizzare parent::
    Ho una logica tutta mia, fatta di if else ...

  7. #7
    si è installato perchè... non potendo usare la "mia"... l'ho commentata

    e ho usato $mysqli->query($query_utenti_ins);

    e funziona...

  8. #8
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    @ yeelach: :: differisce proprio da -> perché funziona a livello di classe e non di oggetto. In ogni caso siccome panda estende mysqli l'oggetto parent è instanziato implicitamente in quanto parte integrante del figlio.

    @ Pandax: mi puoi fare vedere il codice completo? Mi spiego meglio mi fai vedere come crei la connessione al db ed il costruttore della tua classe custom?

  9. #9
    chiuso il file.... riaperto... tutto uguale.. ora va

    grazie a tutti per le dritte.. ma sembra andare ora, così com'era scritto all'inizio.

    xdebo - è tutto qui..

    codice:
    /* le mie funzioni */ include_once('../../class/test.class.php'); 
    $mysqli = new panda(HOST, USERNAME, PASSWORD, DATABASE); 
    $query_utenti_upd = "UPDATE `tbl_utenti` SET `codice`= '".$codiceutente."' WHERE `idtbl_utenti` =".$id_utente; 
    $mysqli->my_mysqli_query($query_utenti_upd);

  10. #10
    ho capito ma io non dicevo che l'errore sta nell'usare :: piuttosto che ->, penso che forse non viene istanziato il costruttore di mysqli.
    Poi vabbè può darsi anche che mi sto sbagliando.
    Ho una logica tutta mia, fatta di if else ...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.