怎么在php中利用PDO判断连接是否可用

  介绍

怎么在php中利用PDO判断连接是否可用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

mysql_ping()检查到服务器的连接是否正常。如果到服务器的连接可用,则返回真,否则返回错误的。

但PDO不支持<强> mysql_ping() 强方法,因此需要自己编写代码模拟mysql_ping()方法,检查连接是否可用。

<强>代码如下:

& lt; php ?/* *   ,*检查连接是否可用   ,* @param  Link  dbconn 美元;数据库连接   ,* @return 布尔   ,*/function  pdo_ping (dbconn美元){   尝试才能{   ,,,美元dbconn→getAttribute (PDO:: ATTR_SERVER_INFO);   },才能catch  (PDOException  $ e), {   ,,,如果(大小写敏感(e→美元getMessage (), & # 39; MySQL  server  has  gone 走# 39;)!==false) {   ,,,,,return 假;   ,,,}   ,,}   return 才能;真实;   }   ?在

<强>代码演示:

<强> 1,创建测试数据表

CREATE  TABLE ‘用户’,(   ,“id”int (11), unsigned  NOT  NULL  AUTO_INCREMENT,   ,“名字”varchar (20), NOT 空,   ,PRIMARY  KEY  (id)   ),引擎=InnoDB  DEFAULT  CHARSET=use utf8;

<强> 2,插入测试数据

insert  into 用户(名字),值(& # 39;fdipzone& # 39;), (& # 39; xfdipzone& # 39;),(& # 39;特里# 39;);      mysql>, select  *,得到用户;   + - - - - - - - - - - - - - - - - - +   | |,id  name , |   + - - - - - - - - - - - - - - - - - +   |,1,|,fdipzone  |   |,2,|,xfdipzone  |   |,3,|,terry , |   + - - - - - - - - - - - - - - - - - +

<强> 3,演示文件

<强> db。php

& lt; php ?//,数据库操作类   class  DB {//,才能保存数据库连接   private 才能;static  _instance 美元;=,空;//才能,连接数据库   public 才能static  function  get_conn ($ config) {   ,,,如果(收取(self:: _instance美元),,,,!空(self:: _instance美元)){   ,,,,,return 自我::$ _instance;   ,,,}      ,,,dbhost 美元;=,美元配置(& # 39;主机# 39;);   ,,,dbname 美元;=,美元配置(& # 39;dbname # 39;);   ,,,dbuser 美元;=,美元配置(& # 39;用户# 39;);   ,,,dbpasswd 美元;=,美元配置(& # 39;密码# 39;);   ,,,pconnect 美元;=,美元配置(& # 39;pconnect # 39;);   ,,,charset 美元;=,美元配置(& # 39;charset # 39;);      ,,,dsn 美元;=,“mysql:主机=$ dbhost; dbname=$ dbname;“;   ,,,try  {   ,,,,,h_param 美元;=,阵列(   ,,,,,,,,,PDO: ATTR_ERRMODE =祝辞,PDO: ERRMODE_EXCEPTION,   ,,,,,);   ,,,,,if  (charset 美元;!=,& # 39;& # 39;),{   ,,,,,,,美元h_param (PDO:: MYSQL_ATTR_INIT_COMMAND),=, & # 39; SET  NAMES  & # 39;,只字符集;美元,//設置默認編碼   ,,,,,}   ,,,,,if  (pconnect美元),{   ,,,,,,,美元h_param (PDO:: ATTR_PERSISTENT),=,真的;   ,,,,,}   ,,,,,conn 美元;=,new  PDO (dsn美元,dbus美元,dbpasswd美元,美元h_param);      ,,,},catch  (PDOException  $ e), {   ,,,,,throw  new  ErrorException (& # 39; Unable 用connect 用db 服务器只错误:& # 39;,只$ e→getMessage (), 31);   ,,,}      ,,,self:: $ _instance =,康涅狄格州美元;   ,,,return 康涅狄格州美元;   ,,}//才能,执行查询   public 才能;static  function 查询(dbconn美元,sqlstr美元,美元condparam) {   ,,,sth 美元;=,dbconn→美元准备($ sqlstr);   ,,,试着{   ,,,,,$ sth→执行($ condparam);   ,,,},catch  (PDOException  $ e), {   ,,,,,echo  e→美元getMessage () .PHP_EOL;   ,,,}   ,,,result 美元;=,$ sth→fetchAll (PDO:: FETCH_ASSOC);   ,,,return 结果美元;   ,,}//,才能重置连接   public 才能static  function  reset_connect () {   ,,,self:: $ _instance =,空;   ,,}      }   ?在

<强>测试。php

& lt; php ?   require  & # 39; db.php& # 39;;//,数据库设定   $ config =,阵列(   & # 39;才能举办# 39;,=祝辞,& # 39;localhost # 39;   & # 39;才能dbname # 39;,=祝辞,& # 39;用户# 39;   & # 39;才能用户# 39;,=祝辞,& # 39;根# 39;   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在php中利用PDO判断连接是否可用