Использую Open Server. Пишу:
define('DB_HOSTNAME', '127.0.0.1:3310');
define('DB_USERNAME', 'mysql');
define('DB_PASSWORD', 'mysql');
define('DB_DATABASE', 'mydb');
function joinPairs(array $map, $kvSeparator = '=', $itemsSeparator = ';') {
$result = [];
foreach ($map as $key => $value) {
$result[] = "${key}${kvSeparator}${value}";
}
return implode($itemsSeparator, $result);
}
$hostParts = explode(':', DB_HOSTNAME);
$dsn = 'mysql:' . joinPairs([
'host' => $hostParts[0],
'port' => $hostParts[1],
'dbname' => DB_DATABASE,
'charset' => 'utf8',
]);
try {
$db = new PDO($dsn, DB_USERNAME, DB_PASSWORD, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::MYSQL_ATTR_INIT_COMMAND => "set names 'utf8'",
]);
} catch (PDOException $e) {
die($e->getMessage());
}
Получаю: SQLSTATE[HY000] [2002] ����������� �� �����������, �.�. �������� ��������� ������ ������ �� �����������.
Причем именно так, со сбитой кодировкой. Даже не знаю что там написано. На сервере тот же код (только с другими данными входа) работает.