সম্পূর্ণতার জন্য, পিডিও থেকে মাইএসকিউএলে কানেক্ট করার সময় এনকোডিংটি সেট করার আসলে তিনটি উপায় রয়েছে এবং কোনটি উপলব্ধ তা আপনার পিএইচপি সংস্করণের উপর নির্ভর করে depend পছন্দের ক্রমটি হ'ল:
charset
ডিএসএন স্ট্রিংয়ের প্যারামিটার
- সংযোগ বিকল্পটি
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);
}
তিনটিই করা সম্ভবত ওভারকিল (যদি আপনি এমন কোনও ক্লাস না লিখে থাকেন যা আপনি বিতরণ বা পুনরায় ব্যবহার করার পরিকল্পনা করছেন)।