Frigivelsen af PHP version 5 indsat en ny udvidelse til at få adgang til MySQL-databaser kaldet MySQL Forbedret eller MySQLi . MySQLi giver forbedret ydeevne, et objekt -orienteret struktur , støtte til forberedte udsagn og yderligere funktionalitet i form af database -transaktioner. Den nuværende MySQL forlængelse vil ikke blive forbedret , for eksempel for at yde Unicode support og i sidste ende vil blive udfaset begynder med PHP version 6 . Objektorienteret Structure
MySQLi indeholder et sæt af funktioner for en proceduremæssig stil kodestruktur at gøre overgangen fra MySQL lettere. Men det giver også funktionalitet gennem et sæt af objekt-orienterede klasser. Ved hjælp af en objekt-orienteret stil kan gøre MySQL integration passer bedre sammen med PHP version 5 objekt- orienterede funktioner og ofte eliminerer behovet for at skabe ekstra variabler til at understøtte MySQL operationer og opgaver. For eksempel viser følgende koden at forbinde til en database -server og åbne en database i både MySQL og MySQLi : MySQL : $ DBC = mysql_connect ( " localhost ", " bruger" , "password "); $ db = mysql_select_database ( "database" ),
MySQLi : $ db = new MySQLi ( " localhost ", " bruger" , "password ", " database ");
< br > forberedte udsagn
Måske den største forskel mellem MySQL og MySQLi er MySQLi støtte til forberedte udsagn . Med MySQL, er du nødt til at tage særlig pleje for at undslippe enhver streng, der bruges i en forespørgsel til at forhindre SQL-injektion angreb . Med MySQLi og forberedte udsagn , binder dig et sæt parametre til en forespørgsel , og indstille parametre svarende til de forskellige værdier , du vil bruge i forespørgslen. MySQLi tager sig af at sikre, at al kode er korrekt undsluppet før den anvendes til databasen . For eksempel to recrods i en MySQL tabel Følgende kode indsætter hjælp MySQLi : Hej
$ stmt = $ db- > forberede ( " INSERT INTO PEOPLE ( fullname , e-mail ) værdier ( , ) $ ? stmt -> bind_param ( " ss" , $ fullname , $ email ) $ fullname = " John Johnson " $ email = " [email protected] " $ stmt -> udføre (); $ fullname = " Mary Johnson " $ email = " [email protected] " $ stmt -> udføre (); $ stmt - > luk ();
Efficiency forbedringer
grund af forberedte udsagn og andre effektiviseringer , bør MySQLi forlængelse udføre hurtigere end tilsvarende MySQL udsagn. Som du kan se fra det foregående eksempel ved hjælp forberedte udsagn er overhead af et indstik kræves kun én gang, hvornår redegørelsen er forberedt. med en tilsvarende MySQL insert ville overhead af indsatsen gentages med hver indsats forespørgsel til databasen.
Transaktioner
MySQLi giver ekstra funktionalitet i form af transaktioner. med MySQLi udvidelsen , kan du samle et sæt af data operationer sammen til en transaktion, og udføre operationer sammen som en enkelt transaktion. Såfremt én operation i transaktionen mislykkes, hele operationen mislykkes, og enhver ændringer, der er foretaget, er rullet tilbage. for eksempel kan du bruge en transaktion , når du programmerer en overførsel af penge mellem to konti , fordi medmindre begge sider af operationen lykkes , operationen er ikke en succes, og du ikke ønsker at efterlade en stat, hvor en konto er blevet debiteret , men den anden konto er ikke blevet krediteret .