首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP PDO:字符集,集名?

PHP PDO:字符集,集名?
EN

Stack Overflow用户
提问于 2010-12-06 05:54:01
回答 9查看 280.6K关注 0票数 204

我以前在正常的mysql_*连接中有这个:

代码语言:javascript
复制
mysql_set_charset("utf8",$link);
mysql_query("SET NAMES 'UTF8'");

我的PDO需要它吗?我应该把它放在哪里呢?

代码语言:javascript
复制
$connect = new PDO("mysql:host=$host;dbname=$db", $user, $pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-12-06 05:58:23

您将在您的连接字符串中包含它,如下所示:

代码语言:javascript
复制
"mysql:host=$host;dbname=$db;charset=utf8"

但是,在PHP 5.3.6之前,charset选项被忽略。如果你运行的是一个旧版本的PHP,你必须这样做:

代码语言:javascript
复制
$dbh = new PDO("mysql:$connstr",  $user, $password);
$dbh->exec("set names utf8");
票数 500
EN

Stack Overflow用户

发布于 2011-03-29 13:13:55

在PHP 5.3.6之前,charset选项被忽略。如果你运行的是一个旧版本的PHP,你必须这样做:

代码语言:javascript
复制
<?php

    $dbh = new PDO("mysql:$connstr",  $user, $password);

    $dbh -> exec("set names utf8");

?>
票数 64
EN

Stack Overflow用户

发布于 2011-09-07 03:56:59

这可能是最优雅的方式。

就在PDO构造函数调用中,但要避免使用错误字符集选项(如上所述):

代码语言:javascript
复制
$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"
  )
);

对我来说很有用。

票数 46
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4361459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档