Ik zou graag wat meer details willen geven over de oplossing voorgesteld door vartec wat (afhankelijk van uw MySQL-installatie) de meest correcte oplossing voor uw probleem is. Allereerst is het probleem met de tekenset / codering in MySQL een enigszins complex onderwerp dat uitgebreid wordt behandeld in de MySQL-handleiding Hoofdstuk 9.1 "Ondersteuning voor tekensets" . In jouw geval vooral 9.1.4. "Verbindingstekensets en -sorteringen" zal het meest relevant zijn.
Om het kort te maken:MySQL moet weten welke tekenset / codering uw clienttoepassing (sprekend vanuit het databaseperspectief dat uw PHP-script is) verwacht, aangezien het alle tekenreeksgegevens transcodeert van de interne tekenset / codering die is gedefinieerd op server-, database-, tabel- of kolomniveau in de verbindingstekenset / codering. U gebruikt UTF-8 aan de clientzijde, dus u moet MySQL vertellen dat u UTF-8 gebruikt. Dit wordt gedaan door het MySQL-commando SET NAMES 'utf8'
die moet worden verzonden als de eerste vraag bij het openen van een verbinding. Afhankelijk van uw installatie en van de MySQL-clientbibliotheek die u in het PHP-script gebruikt, kan dit automatisch bij elke verbinding worden gedaan.
Als je PDO gebruikt, is het gewoon een kwestie van een configuratieparameter instellen
$db = new PDO($dsn, $user, $password);
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
Het gebruik van mysqli om de tekenset / codering van de client te wijzigen is nog eenvoudiger:
$mysqli = new mysqli("localhost", "user", "password", "db");
$mysqli->set_charset("utf8");
Ik hoop dat dit zal helpen om het geheel begrijpelijker te maken.