Új hozzászólás Aktív témák

  • Taci

    addikt

    válasz pelyib #20545 üzenetére

    Köszönöm a részletes választ!

    Így már sokkal jobban rálátok erre az egész collation-dologra, ez az _ai _as, _ci _cs magyarázat különösen hasznos volt.
    És így, hogy jobban rálátok, még több kérdés merült fel... :F

    Megtaláltam én is végül ezt a választ, amiből idéztél, és én is azt találtam, hogy ha úgy akarok keresni, hogy meg tudjam különböztetni az ékezetes betűket a nem ékezetesektől (_as), de nem számít, hogy kis- vagy nagybetű-e (_ci), akkor utf8mb4_0900_as_ci-t kellene használnom, ami viszont 8.0-tól elérhető csak.

    utf8mb4_bin-nel igazából többet vesztenék a keresésen, mint nyernék, mert ez ugye binárisan hasonlít, tehát a kis- és nagybetűk meg lesznek különböztetve, ami egy keresésben nem szerencsés.

    Így a következő kérdéseim lennének:

    1)
    PHPMyAdmin-ban azt látom, hogy ami táblákat én csináltam, az mind utf8_unicode_ci collation-nel készült, amit pedig a WordPress csinált, az mind utf8mb4_unicode_ci.

    Így, hogy igazából a fentiek (és az egész dolog túlontúl bonyolult mivolta) miatt inkább lemondok arról, hogy megkülönböztessem a keresésben az ékezetes betűket az ékezet nélküliektől, van bármi értelme utf8-ról átállnom utf8mb4-re?
    Azon kívül, hogy emoji-téren future proof lennék.

    2)
    Vagy inkább azt szeretném tudni, hogy elronthatok vele valamit? Ami kód működik, az most szépen működik. Elromolhat valami ezzel az átállással?
    Pl. már nem is emlékszem hol olvastam, de azt írták, hogy ennél a típusú váltásnál vigyázni kell rá, hogy a mező karakterszáma mondjuk 255-re volt beállítva utf8-nál, akkor ez valójában kevesebb lesz utf8mb4-nél a 3 vs 4 byte miatt.

    Illetve itt írnak pár lehetőséget, hogy mi sülhet (és a témaindítónak sült is el) rosszul:
    [link]

    3)
    Ha jól látom, akkor ahhoz, hogy megfelelően hozzam létre a táblákat, ezeket kell csinálnom PHP-ben, ami intézi az SQL-es műveleteket:
    - $conn->set_charset("utf8mb4"); (most utf8 van)
    - a mezőre vonatkozó részekhez (VARCHAR): CHARACTER SET utf8mb4
    - táblára vonatkozó részekhez: CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci (a _bin helyett ez jobb lesz a keresés miatt)

    Jól látom, hogy ezekre kell figyelnem? Vagy van még valami?

    Köszi!

    [ Szerkesztve ]

Új hozzászólás Aktív témák