sql >> Databasteknik >  >> RDS >> Mysql

Hur specificerar man sortering med PDO utan SET NAMES?

Här är ett två i ett svar.

Du kan ställa in detta i DSN eller som MYSQL_ATTR_INIT_COMMAND (anslutningsalternativ).

DSN är bättre, tycker jag.

$connect = new PDO(
  "mysql:host=$host;dbname=$db;charset=utf8", 
  $user, 
  $pass, 
  array(
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
  )
); 

Om du anger UTF-8 du arbetar med standardsorteringen av utf8_general_ci , om inte din db-tabell eller fält använder något annat.

Om du vill att hela servern ska svara med denna standardsortering, använd då konfigurationsdirektiv:

collation_server=utf8_unicode_ci 
character_set_server=utf8

Så du behöver inte ange det vid anslutning varje gång.

Kollationerna påverkar sorteringen av tecken och ställs in på tabellen och fälten i din databas. Dessa inställningar respekteras när du frågar tabellen. Se till att de är inställda. Använd UTF-8-namn med sorteringsuppsättningen i din db.

Din kommentar:

Låt oss citera från MySQL-manualen för att bevisa detta:

Mitt svar:Det fungerar implicit, om inte dina tabeller ändrar detta uttryckligen.

Fråga från kommentar:

Exempel:Kolumnsortering åsidosätter tabellsortering

CREATE TABLE t1
(
    col1 CHAR(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci
) CHARACTER SET latin1 COLLATE latin1_bin;

Om både teckenuppsättning X och SAMMANSTÄLLNING Y anges i en kolumn, används teckenuppsättning X och sortering Y. Kolumnen har teckenuppsättningen utf8 och sortering utf8_unicode_ci som anges i tabellkolumnen, medan tabellen är i latin1 + latin1_bin.

Exempel:i allmänhet används tabellsortering

Om sortering inte uttryckligen anges i en kolumn/fält, används tabellsorteringen:

CREATE TABLE t1
(
    col1 CHAR(10)
) CHARACTER SET latin1 COLLATE latin1_bin;

kol1 har sortering latin1_bin.

Om du vill ha utf8_unicode_ci sortering, ställ in den till dina tabeller i allmänhet eller till kolumnerna/fälten.



  1. Migrera din Access-databas till SQL Server

  2. Datumkolumner i SQL-Server (MSSQL-JDBC 3.0) som körs under Java 1.7.0 hämtade som 2 dagar i det förflutna

  3. Hur man installerar SQL Server på Linux

  4. Anslut till mysql i en dockningsbehållare från värden