php pdo实例,php PDO实例化一次

各位大神,下面是我写的一个连接类有些疑问,望解答

class DbOperator{private static $db = null;public static function getInstance(){try {if($db == null){$db = new PDO("mysql:host=".localhost.";dbname=".test,root,root, array(PDO::ATTR_PERSISTENT => true));$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);}return $db;}catch (Exception $e){die("数据库连接失败!".$e->getMessage());}} function __destruct (){$db = null;}/** * 次函数主要是以集合的形式返回,或插入集合数据。 * @param unknown $strSql * @param unknown $array */ public static function executeArraySql($strSql, $array) { try { DbOperator::getInstance()->beginTransaction(); $stms = DbOperator::getInstance()->prepare($strSql); foreach ($array as $value) { $stms->execute($value); } DbOperator::getInstance()->commit(); }catch (PDOException $e) { print "Error: " . $e->getMessage() . "

"; die(); } } /** * 次函数主要是用来指定条件查询 * @param unknown $strSql * @param unknown $array 查询参数 */ public static function executeSql($strSql,$array) { try { $stms = DbOperator::getInstance()->prepare($strSql); $bRet = $stms->execute($array); return $bRet; }catch (PDOException $e) { print "Error: " . $e->getMessage() . "

"; die(); } }}

当我第一次执行方法调用DbOperator::getInstance() 这个时候$db为null, 满足条件new PDO,

但是当我执行第二次调用DbOperator::getInstance() 的时候$db 应该在第一次的时候就实例化了,但是我debug发现$db还是为null, 又执行了一次new PDO,这是怎么回事

回复讨论(解决方案)

$db 都改成 self::$db

private static $db = null;

这个不要改

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值