laszlo.nu

How to use UTF-8 with MySQL and PHP Data Objects (PDO)

If you are using PHP Data Objects (PDO) and are having trouble getting UTF-8 out of your MySQL server, even though everything is set to UTF-8 explicitly, you might want to try this:

$pdo = new PDO(
  "mysql:host=mysql.example.com;dbname=example_db",
  "username",
  "password",
  array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);

The last parameter of the PDO constructor call is the driver specific options, given as an array with key => value pairs. The MySQL driver have a PDO::MYSQL_ATTR_INIT_COMMAND option where you can specify a command that is executed every time you connect to the database. The MySQL specific query SET NAMES utf8 is simply telling MySQL to use UTF-8 as the character set for our connection.

Read more: