Page

[php]PDO连接mysql常规示例

741Anson17-06-25


[php]PDO连接mysql常规示例
header('Content-type:text/html;Charset=utf8');

class_exists('PDO') || die('PDO module is not exists!');

$conf = array(
    'type'   => 'mysql',
    'host'   => '127.0.0.1',
    'user'   => '',
    'pwd'    => '',
    'port'   => 3306,
    'dbname' => ''
);

$dsn = $conf['type'].':host='.$conf['host'].';port='.$conf['port'].';dbname='.$conf['dbname'].'charset=utf8';

try{
    $dbh = new PDO($dsn, $conf['user'], $conf['pwd'],array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
} catch (PDOException $e){
    die('Connection failed:' . $e->getMessage());
}
$dhb->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);  //使用mysql server预处理
$dbh->exec('SET NAMES utf8');


PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING 异常处理能有效发现问题
使用 try catch 能捕捉数据库连接异常
注意事项: mysql配置项统一设置utf8编码,否则$e->getMessage()会乱码

default-character-set=utf8
character-set-server=utf8

配置好后要重启mysql



更新:

$dsn 添加charset=utf8编码;


设置PDO::ATTR_EMULATE_PREPARES为false,不使用php本地的预处理机制,使用mysql server端的预处理机制。加强安全。


2017年7月17日22:06:39

参考:http://www.jb51.net/article/56612.htm



来自ansion博客

2017年6月25日