sql >> Database teknologi >  >> RDS >> Mysql

Specialtegn i PHP / MySQL

Jeg vil gerne give nogle flere detaljer om løsningen foreslået af vartec hvilket er (afhængigt af din MySQL-installation) den mest korrekte løsning på dit problem. Først og fremmest er tegnsættet/kodningsproblemet i MySQL et noget komplekst emne, som er grundigt dækket i MySQL-manualen Kapitel 9.1 "Understøttelse af tegnsæt" . I dit tilfælde især 9.1.4. "Forbindelse af tegnsæt og sorteringer" vil være mest relevant.

For at gøre det kort:MySQL skal vide, hvilket tegnsæt/kodning din klientapplikation (taler fra databasen, som er dit PHP-script) forventer, da det vil omkode alle strengdata fra det interne tegnsæt/kodning defineret på server-, database-, tabel- eller kolonneniveau ind i forbindelsens tegnsæt/kodning. Du bruger UTF-8 på klientsiden, så du skal fortælle MySQL, at du bruger UTF-8. Dette gøres med MySQL-kommandoen SET NAMES 'utf8' som skal sendes som den første forespørgsel ved åbning af en forbindelse. Afhængigt af din installation og af det MySQL-klientbibliotek, du bruger i PHP-scriptet, kan dette gøres automatisk ved hver forbindelse.

Hvis du bruger PDO er det bare et spørgsmål om at indstille en konfigurationsparameter

$db = new PDO($dsn, $user, $password);
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");

Det er endnu nemmere at bruge mysqli til at ændre klientens tegnsæt/kodning:

$mysqli = new mysqli("localhost", "user", "password", "db");
$mysqli->set_charset("utf8");

Jeg håber, det vil være med til at gøre det hele mere forståeligt.



  1. Sådan sletter du hele MySQL-databasen

  2. Vil du fjerne dubletter med kun en MySQL-forespørgsel?

  3. Sådan starter parallelle planer - del 3

  4. Udskiftning af tabelpartitioner i SQL Server:En gennemgang