thinkphp3.2.2中如何用pdo方式连接数据库

我在model里使用了远程mysql,连接信息如下

protected $connection = array(
    // 数据库类型
    'db_type'        => 'mysql',
    // 服务器地址
    'db_host'    => '',
    // 数据库名
    'db_name'    => '',
    'db_port'    => '3306',
    // 数据库用户名
    'db_user'    => '',
    // 数据库密码
    'db_pwd'    => '',
    // 数据库编码默认采用utf8
    'db_charset'     => 'utf8',
    'db_params' => array(PDO::ATTR_PERSISTENT => true),
);

'db_params' => array(PDO::ATTR_PERSISTENT => true),的用途是数据库长连接。

使用后提示pdo找不到。先使用phpinfo查看是不是有pdo 和pdo_mysql. 如果有,应该是代码的问题。如果没有则要添加扩展。

百度搜索到如下资料:(如果不用这种方法,也可以在model php文件中加上 use PDO解决,也就是全名空间的问题

 

本来我想在thinkphp3.2.2中用pdo方式连接mysql数据库,但我在调试的时候就以连接mysql作测试,我发现用pdo连接mysql都有问题,比方说我不在3.2框架里写这样一段代码:

        $dsn = 'mysql:dbname=onethink;host=localhost;port=3306';

        $username = 'root';

        $password = '123456';

        $db=new Pdo($dsn, $username, $password);

        $sql="select * from onethink_menu";

        $prepare=$db->prepare($sql);

        $prepare->execute();//添加条件数据

        $table = $prepare->fetchAll();

        var_dump($table);  

 

测试通过。但我如果将这段代码放在admin下index控制器里:

namespace Admin\Controller;

use Think\Controller;

use Think\Db\Driver;

class IndexController extends Controller {

    public function index(){

        $dsn = 'mysql:dbname=onethink;host=localhost;port=3306';

        $username = 'root';

        $password = '123456';

        $db=new Pdo($dsn, $username, $password);

        $sql="select * from onethink_menu";

        $prepare=$db->prepare($sql);

        $prepare->execute();//添加条件数据

        $table = $prepare->fetchAll();

        var_dump($table);

}

}

在这里测试就会出现以下错误:

:(

Class 'Admin\Controller\PDO' not found

错误位置

FILE: E:\xampp\htdocs\GhpArchives\Application\Admin\Controller\IndexController.class.php  LINE: 11

请问这个问题怎么解决?是还要调用什么命名空间吗?在配置文件里用pdo调用我测试了是没问题的。

 

解决方法:   $db=new \PDO($dsn, $username, $password);即可,虽然我也不知道什么原因!

你可能感兴趣的:(php,thinkphp)