在构造方法中使用静态属性保存的PDO资源句柄在其他方法中无法调用??? ?php classDB{ protected$link='127.0.0.1'; protected$dbname='think'; staticpublic$DB; privatefunction__construct(){ try{ self::$DB=newPDO("mysql:host={$this-link};dbname={$t
在构造方法中使用静态属性保存的PDO资源句柄在其他方法中无法调用???
<?php<br />
<br />
class DB{<br />
protected $link = '127.0.0.1';<br />
protected $dbname = 'think';<br />
static public $DB;<br />
private function __construct(){<br />
try{<br />
self::$DB = new PDO("mysql:host={$this->link};dbname={$this->dbname}",'root','root');<br />
}catch (PDOException $e){<br />
die("连接出错:".$e->getMessage());<br />
}<br />
<br />
$sql = ' SELECT * FROM user WHERE id=? and username=? and email=? ';<br />
$stmt = self::$DB->prepare($sql);<br />
$stmt->execute([0=>'13',1=>'12',2=>'12']);<br />
echo '<pre class="brush:php;toolbar:false;">';<br />
print_r($stmt->fetchAll(PDO::FETCH_ASSOC));<br />
echo $stmt->rowCount();<br />
}<br />
//静态方法,单例统一访问入口<br />
static public function getInstance() {<br />
if (is_null ( self::$DB ) || isset ( self::$DB )) {<br />
self::$DB = new self ();<br />
}<br />
return self::$DB;<br />
}<br />
public function Test(){<br />
$sql = ' SELECT * FROM user WHERE id=? and【本文来自鸿网互联 (http://www.68idc.cn)】 username=? and email=? ';<br />
$stmt = self::$DB->prepare($sql);<br />
$stmt->execute([0=>'13',1=>'12',2=>'12']);<br />
echo '<pre class="brush:php;toolbar:false;">';<br />
print_r($stmt->fetchAll(PDO::FETCH_ASSOC));<br />
echo $stmt->rowCount();<br />
}<br />
}<br />
$db = DB::getInstance();<br />
$db->Test();

class DB{<br />
protected $link = '127.0.0.1';<br />
protected $dbname = 'think';<br />
static public $DB;<br />
static public $_DB;<br />
private function __construct(){<br />
try{<br />
self::$_DB = new PDO("mysql:host={$this->link};dbname={$this->dbname}",'root','root');<br />
}catch (PDOException $e){<br />
die("连接出错:".$e->getMessage());<br />
}<br />
}<br />
//静态方法,单例统一访问入口<br />
static public function getInstance() {<br />
if (is_null ( self::$DB ) <br><font color='#FF8000'>------解决思路----------------------</font><br> isset ( self::$DB )) {<br />
self::$DB = new self ();<br />
}<br />
return self::$DB;<br />
}<br />
public function Test(){<br />
$sql = ' SELECT * FROM user WHERE id=? and username=? and email=? ';<br />
$stmt = self::$_DB->prepare($sql);<br />
$stmt->execute([0=>'13',1=>'12',2=>'12']);<br />
echo '<pre class="brush:php;toolbar:false;">';<br />
print_r($stmt->fetchAll(PDO::FETCH_ASSOC));<br />
echo $stmt->rowCount();<br />
}<br />
}<br />
$db = DB::getInstance();<br />
$db->Test();class DB extends PDO {<br />
private static $_Instance;<br />
function __construct() {<br />
$options = array(<br />
PDO::MYSQL_ATTR_INIT_COMMAND => "set names gbk",<br />
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,<br />
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,<br />
);<br />
<br />
parent::__construct('mysql:dbname=test', 'root', '', $options);<br />
}<br />
//执行各种 sql 指令,并可通过参数 $param 进行扩展<br />
function query($sql, $param=null) {<br />
$res = [];<br />
try {<br />
$rs = parent::query($sql);<br />
do {<br />
if($t = $rs->fetchall()) $res[] = $t;<br />
}while($rs->nextRowset());<br />
return $res;<br />
} catch (PDOException $e) {<br />
die( "Error!: " . $e->getMessage() . "\n" );<br />
// die();<br />
}<br />
}<br />
//查询并返回单条记录<br />
static function fetch($sql) {<br />
if(! self::$_Instance) self::$_Instance = new self;<br />
return self::$_Instance->query($sql)[0][0];//->fetch();<br />
}<br />
//查询并以数组方式返回多条记录<br />
static function fetchall($sql) {<br />
if(! self::$_Instance) self::$_Instance = new self;<br />
$res = self::$_Instance->query($sql);//->fetchall();<br />
if(count($res) == 1) return current($res);<br />
}<br />
}<br />
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号