【问题标题】:How to make PDO adapter run SET NAMES utf8 each time I connect? [duplicate]每次连接时如何让 PDO 适配器运行 SET NAMES utf8? [复制]
【发布时间】:2017-03-15 14:50:30
【问题描述】:
abstract class RepositoryBase
{
    protected $connection;//This is PDO Object!

    public function __construct(PDO $connection = null)
    {
        $this->connection = $connection;
        if ($this->connection === null) {
            $this->connection = new PDO(
                'mysql:host=localhost:3307;dbname=project',
                'root',
                'usbw'
            );
            $this->connection->setAttribute(
                PDO::ATTR_ERRMODE,
                PDO::ERRMODE_EXCEPTION
            );
        }
    }

pdo set names utf8

【问题讨论】:

标签: php mysql


【解决方案1】:

试试这个:

$options = [
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"
];

$this->connection = new PDO(
    'mysql:host=localhost:3307;dbname=project',
    'root',
    'usbw',
    $options
);

$this->connection->setAttribute(
    PDO::ATTR_ERRMODE,
    PDO::ERRMODE_EXCEPTION
);

【讨论】:

  • stackoverflow.com/a/18496873/476。更不用说setAttribute 调用的语法完全是一派胡言。
  • 解析错误:语法错误,意外的 '=>' (T_DOUBLE_ARROW),在第 23 行的 I:\Project\root\Repositories\RepositoryBase.php 中需要 ',' 或 ')'
  • 抱歉,我只是从我的配置中得到的,并没有针对这种情况进行验证。
  • 修复和测试的例子。对我来说效果很好。
猜你喜欢
  • 2010-10-09
  • 1970-01-01
  • 2011-02-09
  • 2012-12-12
  • 2019-04-06
  • 1970-01-01
  • 2014-08-27
  • 1970-01-01
  • 2013-03-01
相关资源
最近更新 更多