Aggiungere charset=utf8mb4 in fondo alla stringa di connessione, come in
Codice PHP:
$pdo = new PDO(
'mysql:host=localhost;dbname=my_dampyr;charset=utf8mb4',
'dampyr',
''
);
dovrebbe avere lo stesso effetto, visto che equivale a:
Codice:
SET character_set_client = utf8mb4;
SET character_set_connection = utf8mb4;
SET character_set_results = utf8mb4;
Aggiornamento
Ecco, mistero semi-spiegato! MySQL su AlterVista sembra ignorare il parametro "charset=...", ma eseguire le tre query sopra funziona.
Nel dettaglio, questo funziona in locale (MySQL 5.7 / PHP 7.2 / mysql_nd 5.0.12) ma non su AlterVista (MySQL 5.6 / PHP 7.1 / mysql_nd 5.0.12)
Codice PHP:
$pdo = new PDO('mysql:host=127.0.0.1;db_name=my_dreadnaut;charset=utf8mb4', 'dreadnaut', '');
Così come questo:
Codice PHP:
$pdo = new PDO(
'mysql:host=127.0.0.1;db_name=my_dreadnaut;charset=utf8mb4',
'dreadnaut', '',
[ PDO::MYSQL_ATTR_INIT_COMMAND => "SET character_set_results = 'utf8mb4';" ]
);
L'unica soluzione sembra essere cambiare il charset in un passo separato:
Codice PHP:
$pdo = new PDO('mysql:host=127.0.0.1;db_name=my_dreadnaut'; 'dreadnaut', '');
$pdo->exec(<<<FINE
SET character_set_client = 'utf8mb4';
SET character_set_connection = 'utf8mb4';
SET character_set_results = 'utf8mb4';
FINE
);