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

    Aiuto su ruchiamo errori eccezioni

    io ho qursta funziona qua:
    Codice PHP:
     // select.php
    function select() {
        global 
    $config;
        
    $result = array();
        try {
            
    $result $config->getPdo()->query("CALL getBook()");
            return 
    $result;
        } catch (
    PDOException $e) {
            
    $error $e->getMessage() . "
    "
    ;
            return 
    $error;
            die();
        }

    questa funzione è richiamata in una determinata pagina:
    Codice PHP:
    // tpl.php
    foreach (select () as $row) {
        echo 
    '<tr>';
        echo 
    '<td>' $row['title'] . '</td>';
        echo 
    '<td>' $row['author_name'] . '</td>';
        echo 
    '<td>' $row['editor_name'] . '</td>';
        echo 
    '<td>' $row['price'] . '</td>';
        echo 
    '<td>' $row['isbn'] . '</td>';
        echo 
    '<td>' $row['note'] . '</td>';
        }
        echo 
    '</tr>';

    il tutto funziona bene.
    il fatto, però, è che nn riesco a richiamare eventuali errori catturati nelle eccezioni.
    se ad esempio richiamo una SP sbagliata succede solo che nn si vedono i dati.
    io invece vorrei che venisse mostrato l'errore.
    ho fatto qualche prova ma senza successo.
    come faccio a far stampare l'errore quando si verifica??

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    cambia questi
    return $error;
    die();

    con

    die($error);

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  3. #3
    dici così:
    Codice PHP:
    function select() {
        global 
    $config;
        
    $result = array();
        try {
            
    $result $config->getPdo()->query("CALL getBoo()");
            return 
    $result;
        } catch (
    PDOException $e) {
            
    $error $e->getMessage() . "
    "
    ;
    //        return $error;
            
    die($error);
        }

    purtroppo è uguale.
    ho messo una SP inesistente ma nn esce nessun errore.

  4. #4
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    prova con
    codice:
    function select() {
        global $config;
        $result = array();
        try {
            $result = $config->getPdo()->query("CALL getBoo()");
            return $result;
        } catch (Exception $e) {
            die($e);
        }
    }
    magari l'eccezione che viene lanciata non appartiene alla classe PDOException

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  5. #5
    neanche così.
    ho provato anche altre varianti:
    die($e->getMessage());
    return $e->getMessage();

    in qualsiasi caso nn esce l'errore.

    bho sti try/catch in php nn funzionano benissimo mi pare.

  6. #6
    ritorno sul problema perchè ho fatto un passo avanti.
    allora, io ho una classe che istanzio per connettermi:
    codice:
    <?php
    
    class Config {
    
        private $pdo;
        private static $instance;
    
        private function __construct() {
            try {
                $this->pdo = new PDO('mysql:host=localhost;dbname=db', "user", "pwd", array(
                            PDO::ATTR_PERSISTENT => TRUE
                        ));
            } catch (PDOException $e) {
                echo '<script type="text/javascript">alert("' . $e->getMessage() . '");</script>';
    //            print "Error!: " . $e->getMessage() . "
    ";
                die();
            }
        }
    
        public static function getInstance() {
            if (!isset(self::$instance)) {
                $c = __CLASS__;
                self::$instance = new $c;
            }
            return self::$instance;
        }
    
        public function __clone() {
            trigger_error('Clone is not allowed.', E_USER_ERROR);
        }
    
        public function getPdo() {
            return $this->pdo;
        }
    ...........
    qui ho i parametri di connessione e qui mi funge tutto, nel senso che se sbaglio ad esempio la password quando provo ad andare sulla home mi compare un bel messaggio di errore.
    nella home faccio così:
    codice:
    include_once 'lib/config.php';
    $config = Config::getInstance();
    e fin qua tutto bene.

    passiamo alla pagina.
    io ho questa funzione che usa $config:
    codice:
    function selectEntrate() {
        global $config;
        try {
            $result = $config->getPdo()->query("SELECT * FROM entrate_vie");
            return $result;
        } catch (Exception $e) {
            echo '<script type="text/javascript">alert("' . $e->getMessage() . '");</script>';
        }
    }
    e poi la funzione la richiamo con un foreach.
    se qua sbaglio la query nn esce assolutamente nulla, come se nel catch nn entrasse mai.

  7. #7
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    Non me ne sono accorto la prima volta e non ho idea se possa essere questo il problema...cmq...la struttura del tuo try-catch con return dovrebbe essere
    Codice PHP:
    function selectEntrate() {
        global 
    $config;
        
    $result=null;
        try {
            
    $result $config->getPdo()->query("SELECT * FROM entrate_vie");
        } catch (
    Exception $e) {
            echo 
    '<script type="text/javascript">alert("' $e->getMessage() . '");</script>';
        }
        return 
    $result;


    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  8. #8
    anche così nn esce nulla.

  9. #9
    potrei anche fare una cosa così:
    Codice PHP:
    function selectUscite() {
        global 
    $config;
        
    $result $config->getPdo()->query("SELET * FROM uscite_view");
        if (
    $result) {
            return 
    $result;
        } else {
            echo 
    '<script type="text/javascript">alert("' $e '");</script>';
        }

    solo che vorrei cmq richiamare il getMessage() di PDOException solo che nn so come.

  10. #10
    Prova così:
    config.php
    Codice PHP:
    <?php
    define
    ("DB_HOST"'localhost');
    define("DB_USER"'root');
    define("DB_PASS"'');
    define("DB_NAME"'test');
    ?>
    database.class.php
    Codice PHP:
    <?php
    class Database{
        private static 
    $DB null;
        
        public static function 
    getInstance() {
            require_once(
    'config.php'); // i define dei parametri di connessione
            
    if( is_null(self::$DB) ){
                
    self::$DB = New PDO('mysql:host=' DB_HOST ';dbname=' DB_NAMEDB_USERDB_PASS);
                
    self::$DB->setAttributePDO::ATTR_ERRMODE,  PDO::ERRMODE_EXCEPTION ); 
                
    self::$DB->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODEPDO::FETCH_OBJ); 
                
    self::$DB->setAttribute(PDO::ATTR_PERSISTENTTRUE);
                }
            return 
    self::$DB;
            }
        }
    ?>
    Codice PHP:
    function selectEntrate() { 
        require_once(
    'database.php'); 
        
    $db = New Database();
        
    $result=null
        try { 
            
    $result $db->query("SELECT * FROM entrate_vie"); 
        } catch (
    Exception $e) { 
           
    // otteniamo l'errore  
           
    echo 'Error: ' $e->getMessage();   
           echo 
    'Line: ' $e->getLine();   
           echo 
    'File: ' $e->getFile();   
           die();
        } 
        return 
    $result

    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

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.