PHPPDO:字符集,设置名称?我以前在正常的MySQL_*连接中有过这样的情况:mysql_set_charset("utf8",$link);mysql_query("SET NAMES 'UTF8'");我需要它吗?我应该把它放在哪里?$connect = new PDO("mysql:host=$host;dbname=$db", $user, $pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
4 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
"mysql:host=$host;dbname=$db;charset=utf8"
$dbh = new PDO("mysql:$connstr", $user, $password);$dbh->exec("set names utf8");
函数式编程
TA贡献1807条经验 获得超9个赞
<?php
$dbh = new PDO("mysql:$connstr", $user, $password);
$dbh -> exec("set names utf8");?>
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
$connect = new PDO( "mysql:host=$host;dbname=$db", $user, $pass, array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" ));
侃侃尔雅
TA贡献1801条经验 获得超16个赞
charset参数在DSN字符串中。 跑 SET NAMES utf8带着 PDO::MYSQL_ATTR_INIT_COMMAND连接选项 跑 SET NAMES utf8手动
<?php
define('DB_HOST', 'localhost');define('DB_SCHEMA', 'test');define('DB_USER', 'test');define('DB_PASSWORD', 'test');define('DB_ENCODING', 'utf8');$dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_SCHEMA;$options = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,);if( version_compare(PHP_VERSION, '5.3.6', '<') ){
if( defined('PDO::MYSQL_ATTR_INIT_COMMAND') ){
$options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES ' . DB_ENCODING;
}}else{
$dsn .= ';charset=' . DB_ENCODING;}$conn = @new PDO($dsn, DB_USER, DB_PASSWORD, $options);if( version_compare(PHP_VERSION, '5.3.6', '<') && !defined('PDO::MYSQL_ATTR_INIT_COMMAND') ){
$sql = 'SET NAMES ' . DB_ENCODING;
$conn->exec($sql);}做这三件事可能是过分的(除非您正在编写您计划分发或重用的类)。
添加回答
举报
0/150
提交
取消
