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
提交
取消