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.