How to get database name in PDO? How to get database name in PDO? database database

How to get database name in PDO?


Given you're on mysql, you can do select database() to get the name of the default database.

/* @var $pdo PDO */$pdo->query('select database()')->fetchColumn();


Nope, there is no built-in feature.

But you can extend class MyPdo extends PDO, parse and store dsn and return it by some accessor

class MyPdo extends PDO{    ...    /**     * @param string $dsnParameter     * @param string|null $default     * @throws RuntimeException     * @return string|null     */    public function getDsnValue($dsnParameter, $default = NULL)    {        $pattern = sprintf('~%s=([^;]*)(?:;|$)~', preg_quote($dsnParameter, '~'));        $result = preg_match($pattern, $this->dsn, $matches);        if ($result === FALSE) {            throw new RuntimeException('Regular expression matching failed unexpectedly.');        }        return $result ? $matches[1] : $default;    }    ...


You could use the setAttribute() (essentially a key value pair) method to store the database name when you set it up initially, then use the getAttribute() later in your code to see what the value is.

http://www.php.net/manual/en/pdo.setattribute.php