我创建了一个小型的PDO类并花了几个小时来调试它,但却找不到导致每件事都失败的小错字。下面演示的是有缺陷的代码。
class MyPDO extends PDO
{
private static $instance = null;
function __construct(){
try{
parent::__construct("mysql:host=localhost;port=3306;dbname=blog", "root", "");
parent::setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}catch(PDOException $e){
echo 'Exception in constructor'.print_r($e->trace(),true);
}
}
static public function getDB(){
if(self::$instance == null){
self:$instance = new MyPDO();
}
return self::$instance;
}
function selectAll($sql){
$stmt = self::$instance->prepare($sql);
$stmt->execute(array(":cat_id"=>1));
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}
我想确认一下,如果有人已经看过它或者它是一个错误,或者它可以用于其他我不知道的东西。
我写的以下行有问题。
self:$ instance = new MyPDO();
它应该是具有双冒号的范围解析运算符,即
self :: $ instance = new MyPDO();
令我惊讶的是,单个冒号没有产生任何警告或错误。如果有人知道这一点,请分享。
答案 0 :(得分:4)