Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Visualizzare errori su Statements in MySQLi

    Salve,
    vorrei visualizzare gli errori su tutti gli steps di una query,
    attualmente mi restituisce solo gli errori di tipo mysql,
    tutti gli altri se manometto qualcosa tipo:

    $stmt->bind_param('ss', $_user, $_pass)
    con:
    $stmt->bind_param('sss', $_user, $_pass)
    oppure:
    $stmt->bind_param('ss', $_user, $_pass, $_altro)

    Non restituisce nessun errore.

    Come posso risolvere il problema?


    codice:
    <?
    function MyFun()
    {
    	if(!($stmt = $oConn->prepare("SELECT * FROM users WHERE(user = ?, pass = ?);")))
    	{
    		echo '('.$oConn->errno.') '.$oConn->error;
    		return;
    	}
    	
    	if(!$stmt->bind_param('ss', $_user, $_pass))
    	{
    		echo '('.$stmt->errno.') '.$stmt->error;
    		$stmt->close();
    		return;
    	}
    	
    	if(!$stmt->execute())
    	{
    		echo '('.$stmt->errno.') '.$stmt->error;
    		$stmt->close();
    		return;
    	}
    	
    	if(!($result = $stmt->get_result()))
    	{
    		echo '('.$stmt->errno.') '.$stmt->error;
    		$stmt->close();
    		return;
    	}
    }
    
    
    MyFun();
    ?>
    Grazie a tutti.

  2. #2
    Quelli che stai testando (numero parametri diversi nella funzione bind) non sono errori. Producono dei warning, ma non sono considereati errori bloccanti.
    Se ad esempio provi a cambiare il nome della tabella con una inesistente, vedrai che il tuo script verrà bloccato.

    Per vedere i warning aggiungi queste due righe al tuo codice
    codice:
    error_reporting(E_ALL);
    ini_set('display_errors',1);
    cosi te li stampa a video .. questi errori dove vorresti vederli/lavorarli?
    Pensate i programmi a librerie, e innalzate il livello d'astrazione

  3. #3
    Quote Originariamente inviata da Infocurci Visualizza il messaggio
    Quelli che stai testando (numero parametri diversi nella funzione bind) non sono errori. Producono dei warning, ma non sono considereati errori bloccanti.
    Se ad esempio provi a cambiare il nome della tabella con una inesistente, vedrai che il tuo script verrà bloccato.

    Per vedere i warning aggiungi queste due righe al tuo codice
    codice:
    error_reporting(E_ALL);
    ini_set('display_errors',1);
    cosi te li stampa a video .. questi errori dove vorresti vederli/lavorarli?
    Quello che ho postato è uno script che ho fatto per fare la domanda, in realtà siamo all'interno di una classe, voglio creare dei file log.txt, per errori mysq, per warning di questo tipo, etc...

    Quindi li scrivo non li visualizzo.
    Ora provo come mi hai detto tu.
    Ti ringrazio.

  4. #4
    Se vuoi salvare automaticamente i warning php, aggiungi queste righe all'inizio dello script

    codice:
    ini_set("log_errors", 1);
    ini_set("error_log", "php-error.log");
    nella seconda istruzione, al posto di php-error.log, scrivi il percorso del file nel quale vuoi salvare il log.
    Pensate i programmi a librerie, e innalzate il livello d'astrazione

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Io solitamente in questi casi faccio così, faccio lanciare a mysqli/pdo delle exception sugli errori.

    Per attivarle vedi: http://php.net/manual/en/function.mysqli-report.php

    Dentro ai try catch gestisco gli errori delle eccezioni come preferisco loggando manualmente tramite un logger tipo monolog.

  6. #6
    Quote Originariamente inviata da Infocurci Visualizza il messaggio
    Se vuoi salvare automaticamente i warning php, aggiungi queste righe all'inizio dello script

    codice:
    ini_set("log_errors", 1);
    ini_set("error_log", "php-error.log");
    nella seconda istruzione, al posto di php-error.log, scrivi il percorso del file nel quale vuoi salvare il log.
    Si..., è vero, non ci avevo pensato, grazie mille!!!

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.