Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [MySQL] Come visualizzare una query?

    Ho scaricato uno script in PHP e l'ho installato all'interno di un database in localhost, nient'altro. Ora, da completo inesperto in materia, chiedo: come si visualizza la query generata dallo script per interrogare il database?

    Grazie

  2. #2
    In linea generale, tu copi il tuo script in una cartella del tuo server locale, poi dal browser richiami quel file specifico, che eseguirà la query. Metti ad esempio che tu hai installato all'interno del tuo server locale un file chiamato pippo.php nella cartella prova. Lancerai il browser, digiterai 127.0.0.1/prova/pippo.php ed a video vedrai il risultato dello script. Però, così a naso, mi viene da chiederti se nello script hai modificato o inserito l'utente corretto e relativa password per connetterti al db Mysql..

  3. #3
    Utente di HTML.it L'avatar di lloyd27
    Registrato dal
    Mar 2006
    Messaggi
    256
    Originariamente inviato da timberwolf
    In linea generale, tu copi il tuo script in una cartella del tuo server locale, poi dal browser richiami quel file specifico, che eseguirà la query. Metti ad esempio che tu hai installato all'interno del tuo server locale un file chiamato pippo.php nella cartella prova. Lancerai il browser, digiterai 127.0.0.1/prova/pippo.php ed a video vedrai il risultato dello script. Però, così a naso, mi viene da chiederti se nello script hai modificato o inserito l'utente corretto e relativa password per connetterti al db Mysql..
    A me sembra abbia chiesto tutt'altro sinceramente eh...

    Se vuoi vedere le query che questo script fa al database devi abilitare la funzione di logging di MySQL, in modo che salvi su un file di log tutte le query che esegue. Non ricordo bene che parametri si debba modificare in my.cnf, ma una ricerca su google con qualcosa come "mysql query logging" dovrebbe darti le risposte che cerchi

  4. #4
    Anche a me interessa fare un logs di query, anche se io gestisco le query da un funzione in una classe a questo punto mi converrebbe di più metterci in quella funzione la scrittura al logs...

  5. #5
    Se il motivo per cui vuoi vedere la query mandata al db è puramente "test", per così dire, perchè non usare un banale "echo $query"?
    Riguardo a loggare le query su mysql, non è sempre una buona pratica fidarsi di questo metodo perchè spesso sugli hosting condivisi non si ha accesso a tali file di log e inoltre l'utilità è relativa, dato che comunque devi andare a scaricarti il file e analizzarlo a manina.
    Molto più comodo, se realmente c'è un'esigenza imprescindibile, loggare in una tabella del db o in un file di testo da qualche parte nella root del web server. I vantaggi sono abbastanza evidenti, non ultimo la possibilità di sapere anche chi ha chiamato lo script (che utente loggato, l'ip, il cookie, eccetera) e che script ha chiamato la query...

    Il tutto secondo me, ovviamente


  6. #6
    Ah, concordo con te riguardo al primo punto, io personalmente per avere un log non solo più ordinato, ma anche mooolto più piccolo registro solo le query che non hanno un esito positivo, dunque gli segno data, query, dati ecc.... in modo tale che riesca a rendermi conto del perchè.... concordo anche con la questione di non affidarsi agli hosting, perchè probabilmente avrai problemi col reperire il file di log....

  7. #7
    Un modo ancora più "semplice", che però può causare una marea di messaggi, è inviare una mail con l'errore...
    Nel gestore delle query si fa qualcosa del tipo
    Codice PHP:
    if (! $this->query_id )
            {
                
    $this->fatal_error("mySQL query error: $the_query");
            } 
    Codice PHP:
    private function fatal_error($the_error="")
        {
            
    $this->error    $this->_get_error_string();
            
    $this->error_no $this->_get_error_number();
            
    $the_error "
    [b]" 
    $the_error "[/b]
    "
    ;
            
    $the_error .= "[b]SQL error:[/b] ".$this->error."
    "
    ;
            
    $the_error .= "[b]SQL error code[/b]: ".$this->error_no."
    "
    ;
            
    $the_error .= "[b]Date:[/b] ".date("l dS \o\f F Y h:i:s A") . "
    "
    ;
            
    $trace $this->superGestore->getDebugBacktrace();
            
    $this->superGestore->Error($the_error $trace);
            exit();

    Codice PHP:
    private function _get_error_string()
        {
            if( 
    $this->connect_failed )
            {
                return 
    mysqli_connect_error( );
            }
            else
            {
                return 
    mysqli_error$this->connection_id );
            }
        }

    private  function 
    _get_error_number()
        {
            if( 
    $this->connect_failed )
            {
                return 
    mysqli_connect_errno( );
            }
            else
            {
                return 
    mysqli_errno$this->connection_id );
            }
        } 
    superGestore
    Codice PHP:
    function getDebugBacktrace($NL "
    "
    ) {
            
    $dbgTrace debug_backtrace();
            
    $dbgMsg .= $NL."<h5>[b]Debug backtrace begin:[/b]</h5><ul>";
            foreach(
    $dbgTrace as $dbgIndex => $dbgInfo) {
                
    $dbgMsg .= "[*]at $dbgIndex  [i]".$dbgInfo['file']."[/i] (line {$dbgInfo['line']}) -> <u>{$dbgInfo['function']}</u>";
            }
            
    $dbgMsg .= "[/list]<h5>[b]Debug backtrace end[/b]</h5>".$NL;
            return 
    $dbgMsg;
        } 
    e la funzione Error non fa altro che inviare la mail.
    Questo metodo lo uso molto, ma solo quando sono in produzione. Nelle fasi di test è eccessivo, basta una segnalazione a video

  8. #8
    Hmmmm.... Certo è un altro metodo, ma a mio parere e dal mio punto di vista, è meglio una semplice scrittura in un file di log, che ogni tanto volendo lo si va a vedere... Giustamente se percaso hai un sito utilizzato da 10.000 persone di cui 1.000 causano un errore di query, che ti arrivano 1000 mail Impazzisci...

  9. #9
    Ringrazio tutti per le dettagliate risposte.

    Il mio script genera un errore di sintassi (syntax error), tale:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS ID, t2.field_comment AS FCOMMENT FROM form_fields AS t1, form_field_translati' at line 1

    L'avete mai sentito un affare del genere??

  10. #10
    posta il codice se puoi

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.