本篇目录
pdo是php系统自带的类,一般我们会自己封装数据库操作,如果封装的class类中间使用了pdo且使用了namespac命名空间,在调用的时候会直接在该命名空间下查找pdo类,显然是查不到的。这时候基本会报错 找不到xxxx\PDO class类
方法一
在你声明命名空间namespace xxx下使用如下语句将pdo类引入当前命名空间,以下code仅做示范,不代表可用。
<?phpnamespace xxx;//你声明的命名空间use PDO;use PDOException;//如果有使用报错捕获,还需增加这行class db{function __construct($sql){$dsn="mysql:host=127.0.0.1;port=3306;dbname=ranjuandb";$user='sa';$pass='123456';$dbh = new PDO($dsn,$user,$pass);$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);return $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);}}
方法二
在使用pdo类的时候前面加上斜杠“\”,pdo位于php的脚本根目录路径?
<?phpnamespace xxx;//你声明的命名空间//use PDO;// 在pdo前面加斜杠的话这里就可以不使用use PDOclass db{function __construct($sql){$dsn="mysql:host=127.0.0.1;port=3306;dbname=ranjuandb";$user='sa';$pass='123456';$dbh = new \PDO($dsn,$user,$pass);//加上斜杠$dbh->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);//加上斜杠return $dbh->query($sql)->fetchAll(\PDO::FETCH_ASSOC);//加上斜杠}}
另外需要注意的是如果class类里面有使用try{……}catch(PDOException $e){ ……}这种代码的也要引入use PDOException;或在 PDOException 前加斜杠!
发表评论