sql >> Database >  >> RDS >> Mysql

Utf8mb4-gegevens manipuleren vanuit MySQL met PHP

Ik vermoed gewoon dat je de tabel instelt op utf8mb4 , maar je verbindingscodering is ingesteld op utf8 . Je moet het instellen op utf8mb4 ook, anders converteert MySQL de opgeslagen utf8mb4 gegevens naar utf8 , waarvan de laatste geen "hoge" Unicode-tekens kan coderen. (Ja, dat is een MySQL-eigenaardigheid.)

Op een onbewerkte MySQL-verbinding moet het er als volgt uitzien:

SET NAMES 'utf8mb4';
SELECT * FROM `my_table`;

Je zult dat moeten aanpassen aan de beste manier van de klant, afhankelijk van hoe je verbinding maakt met MySQL vanuit PHP (mysql, mysqli of PDO).

Om echt te verduidelijken (ja, met behulp van de mysql_ extensie voor de eenvoud, doe dat niet thuis):

mysql_connect(...);
mysql_select_db(...);
mysql_set_charset('utf8mb4');     // adapt to your mysql connector of choice

$r = mysql_query('SELECT * FROM `my_table`');

var_dump(mysql_fetch_assoc($r));  // data will be UTF8 encoded


  1. MySQL:is het mogelijk om meerdere rijen te group_concat?

  2. MySQL Show Grants voor alle gebruikers

  3. afstandsberekeningen in mysql-query's

  4. De grootte van tabellen bepalen in Oracle