首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDO测试是否已连接

PDO测试是否已连接
EN

Stack Overflow用户
提问于 2013-08-14 23:27:24
回答 2查看 18K关注 0票数 2

我在任何地方都找不到答案。也许真的很简单

我的mysql PDO连接如下:

代码语言:javascript
复制
try{
$DBH = new PDO("mysql:host=$db_hostname;dbname=$db_database", $db_username, $db_password);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );  
}
catch (PDOException $e){
echo $e->getMessage();
exit;
}

我只想测试连接是否工作,即。如果密码、用户名、数据库名和主机名拼写正确。

尝试,抛出似乎只是拾取基本的错误,如果驱动程序拼写错误。如果密码错误,它不会抛出错误。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-14 23:41:35

在这个问题上,只需单击一下,PDO tag wiki中就可以找到确切的操作方法:

代码语言:javascript
复制
$dsn = "mysql:host=localhost;dbname=test;charset=utf8";
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn,'root','', $opt);

以及一个警告

使用try..catch运算符不仅仅是为了处理错误消息。

未捕获的异常对于此目的已经很好了,因为它将以与其他PHP错误相同的方式处理PDO错误-因此,您可以使用站点范围的设置来定义行为。可以稍后添加自定义异常处理程序,但不是必需的。特别是对于新用户,建议使用未处理的异常,因为它们非常有用,非常安全。更多信息...

票数 13
EN

Stack Overflow用户

发布于 2013-08-14 23:36:27

我使用以下代码进行连接:

代码语言:javascript
复制
    <?php
class dbConnection extends PDO{

public function __construct() {    
  switch(DB_TYPE){
    case "mysql":
        $dbconn = "mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET;
        break;
    case "sqlite":
        $dbconn = "sqlite:".DB_PATH.";charset=".DB_CHARSET;
        break;
    case "postgresql":
        $dbconn = "pgsql:host=".DB_HOST." dbname=".DB_NAME.";charset=".DB_CHARSET;
        break;
    }

    parent::__construct($dbconn,DB_USER,DB_PASS,array(PDO::ATTR_EMULATE_PREPARES => false,PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

   }
}
?>

如果我输入了错误的密码,我会得到

连接错误,因为:用户'microaid_logger'@'localhost‘的SQLSTATE28000访问被拒绝(使用密码: YES)

正如您的常识所指出的,如果连接不成功,则已经抛出了一个异常,如果密码错误,也会触发该异常。如果您想格式化或处理错误消息的文本,只需设置一个自定义错误处理程序as described here

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18235881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档