问答详情
源自:5-3 [PDO] 数据库操作类之执行SQL语句

pdo连接mysql数据库错误

http://img.mukewang.com/57b66e19000126cf03070094.jpg

public function __construct($dbConfig=''){
if (!class_exists("PDO")){
self::throw_exception('不支持PDO,请先开启');
}
if(!is_array($dbConfig)){
$dbConfig=array(
'hostname'=>DB_HOST,
'username'=>DB_USER,
'password'=>DB_PWD,
'database'=>DB_NAME,
'hostport'=>DB_PORT,
'dbms'=>DB_TYPE,
'dsn'=>DB_TYPE.":host=".DB_HOST.";dbname=".DB_NAME
);}
if(empty($dbConfig['hostname'])){
self::throw_exception('没有定义数据库配置,请先定义');
}
self::$config=$dbConfig;
if(empty(self::$config['params']))self::$config['params']=array();
if(!isset(self::$link)){
$configs=self::$config;
if(self::$pconnect){
//开启长连接
$configs['params'][constant("PDO::ATTR_PERSISTENT")]=true;
}
try{
self::$link=new PDO($configs['$dsn'],$configs['$username'],$configs['$password'],$configs['$params']);
}catch(PDOException $e){
self::throw_exception($e->getMessage());
}
if(!self::$link){
self::throw_exception('PDO连接错误');
return false;
}
self::$link->exec('SET NAMES'.DB_CHARSET);
self::$dbVersion=self::$link->getAttribute(constant("PDO::ATTR_SERVER_VERSION"));
self::$connected=true;
unset($configs);
}
}
require_once 'config.php';
$PdoMysql=new PdoMysql;
var_dump($PdoMysql);
// echo phpinfo();
// $sql='select * from c_admin';
// print_r($PdoMysql->getAll($sql));

报错信息是:invalid data source name

config.php

<?php
define("DB_HOST",'localhost');
define("DB_USER",'root');
define("DB_PWD",'root');
define("DB_NAME",'cyotel');
define("DB_PORT",'3306');
define("DB_TYPE",'mysql');
define("DB_CHARSET",'utf8');
?>

已开启pdo_mysql扩展

求大神解答 ,感激不尽~

提问者:unclePig 2016-08-19 10:22

个回答

  • 凉爽睡去
    2016-08-20 22:36:22

    self::$link=new PDO($configs['$dsn'],$configs['$username'],$configs['$password'],$configs['$params']);

    这里错了吧,不需要用到$符