sql >> Databáze >  >> RDS >> Mysql

Speciální znaky v PHP / MySQL

Jen bych rád poskytl nějaké další podrobnosti o řešení navrženém vartec což je (v závislosti na vaší instalaci MySQL) nejsprávnější řešení vašeho problému. Zaprvé problém znakové sady / kódování v MySQL je poněkud komplexní téma, které je rozsáhle zahrnuto v příručce MySQL Kapitola 9.1 „Podpora znakové sady“ . Ve vašem případě zejména 9.1.4. "Připojení znakových sad a řazení" bude nejrelevantnější.

Abych to zkrátil:MySQL musí vědět, kterou znakovou sadu / kódování vaše klientská aplikace (mluvení z persoektivy databáze, kterou je váš skript PHP) očekává, protože překóduje všechna data řetězce z interní znakové sady / kódování definovaného na serveru, na úrovni databáze, tabulky nebo sloupce do znakové sady / kódování připojení. Na straně klienta používáte UTF-8, takže musíte MySQL sdělit, že používáte UTF-8. To se provádí příkazem MySQL SET NAMES 'utf8' který musí být odeslán jako první dotaz při otevírání spojení. V závislosti na vaší instalaci a na klientské knihovně MySQL, kterou používáte ve skriptu PHP, to lze provést automaticky při každém připojení.

Pokud používáte PDO, je to jen otázka nastavení konfiguračního parametru

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

Pomocí mysqli je změna klientské znakové sady / kódování ještě jednodušší:

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

Doufám, že to pomůže k tomu, aby byla celá věc srozumitelnější.



  1. TSQL Pivot bez agregační funkce

  2. Jak přidat server pro správu v R12.2

  3. SQL:Jak najít duplikáty na základě dvou polí?

  4. Průvodce návrhem databáze pro správu blogů v MySQL