CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci
für alle Tabellen. Es schlägt fehl, wenn ich auf Emoji stoße (das erste, das ich getroffen habe, war
Ich gebe „utf8mb4“ in der PDO-DSN-Zeichenfolge an. Ich habe versucht, ;collate=utf8mb4_unicode_520_ci hinzuzufügen, was meiner Meinung nach nichts ändern würde, was aber auch nicht der Fall war.
Ich kann manuell (über die Konsole) eine Zeile mit genau derselben Zeichenfolge ohne Fehler in die neue Tabelle einfügen. Es scheint also etwas mit PHP/PDO zu tun zu haben? Aber ich bin einfach ratlos.
MySQL ist Percona 8.4 (insbesondere Version 8.4.7-7 für Linux auf x86_64 (Percona Server (GPL), Release '7', Revision '9a19f1fd'))
Dieser Code funktioniert auf meinem Laptop (Linux Mint 22.2), auf dem die gleichen Versionen von PHP/Apache2 ausgeführt werden, aber eine etwas ältere Version von Percona (Ver 8.4.6-6 für Linux auf x86_64 (Percona Server (GPL), Release '6', Revision '9927a2fb')). Apt besteht darauf, dass ich die neueste Version auf dem Laptop habe und es mir widerstrebt, Dinge zu erzwingen. Aber es scheint nicht, dass die Datenbank das Problem ist, da ich die Daten manuell auf dem Server einfügen kann. Ich habe die phpinfo von jedem System verglichen und es gibt wirklich keinen offensichtlichen Schuldigen (Laptop hat bzip2 und xdebug).
Irgendwelche Vorschläge, wo man sonst noch suchen könnte?
Wie gewünscht:
define( 'DB_CHARSET', 'utf8mb4' );
$dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=' . DB_CHARSET . (DB_COLLATE != '' ? ';collate=' . DB_COLLATE : '' );
$pdo = new PDO($dsn, DB_USER, DB_PASSWORD);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Mobile version