Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 测试PDO连接是否成功_Php_Pdo - Fatal编程技术网

Php 测试PDO连接是否成功

Php 测试PDO连接是否成功,php,pdo,Php,Pdo,我正在学习一个教程,该教程教我如何使用PDO通过php连接到mySQL数据库,我正在试图弄清楚我的连接是否良好。这是我的代码,但我不知道如何检查我是否连接 如何更新以下代码,使其返回“已连接”与“未连接”消息 <?php class Database { private static $dbName = 'benrud_carsData' ; private static $dbHost = 'localhost' ; private static $dbU

我正在学习一个教程,该教程教我如何使用PDO通过php连接到mySQL数据库,我正在试图弄清楚我的连接是否良好。这是我的代码,但我不知道如何检查我是否连接

如何更新以下代码,使其返回“已连接”与“未连接”消息

<?php    
class Database
{
    private static $dbName = 'benrud_carsData' ;
    private static $dbHost = 'localhost' ;
    private static $dbUsername = 'benrud_read5th';
    private static $dbUserPassword = 'XXXXXXX';

    private static $cont  = null;

    public function __construct() {
        die('Init function is not allowed');
    }

    public static function connect()
    {
       // One connection through whole application
       if ( null == self::$cont )
       {     
        try
        {
          self::$cont =  new PDO( "mysql:host=".self::$dbHost.";"."dbname=".self::$dbName, self::$dbUsername, self::$dbUserPassword); 
        }
        catch(PDOException $e)
        {
          die($e->getMessage()); 
        }
       }
       return self::$cont;
    }

    public static function disconnect()
    {
        self::$cont = null;
    }
}

?>

如果您的连接失败,您将得到一个
PDOException
,并且当前正在通过使用异常消息进行处理,因此如果发生这种情况,您肯定知道它不起作用

如果您只需要查看它是否已经建立了连接,那么可以添加一个status方法来检查静态属性是否为null。我显示它返回一个布尔值,因此调用代码可以确定要显示的消息,但是如果您愿意,可以返回一条消息

public static function connectionStatus() {
    return !is_null(self::$cont);
}

您希望返回什么消息?它看起来像
connect()
当前返回连接。如果您返回一条消息,它将不再返回连接,这是不好的。您应该看看
Singlton
模式,它已经实现了一半。对于DB来说,多个Singlton模式更好。碰巧我戴上了它,还有作曲家。@esqew关于那个可能的副本的答案很有趣。根据我的经验,无论是否设置了PDO::ATTR_ERRMODE,构建新PDO时的连接失败都会引发PDOException。