Frisläppandet av PHP version 5 inkluderade ett nytt tillägg för åtkomst till MySQL-databaser kallas MySQL Improved eller mysqli . Mysqli erbjuder förbättrad prestanda , en objektorienterad struktur , stöd för beredda rapporter och övrig funktionalitet i form av databasen transaktioner . Den nuvarande MySQL förlängning kommer inte att förbättras , till exempel att ge Unicode-stöd , och kommer så småningom att fasas ut från och med PHP version 6 . Objektorienterad Struktur
mysqli ger en uppsättning funktioner för ett processuellt - stil kodstruktur att göra övergången från MySQL lättare . Men det ger också funktionalitet genom en uppsättning objektorienterade klasser . Använda en objektorienterad stil kan göra MySQL integration passar bättre med PHP version 5 objektorienterade funktioner och ofta eliminerar behovet av att skapa extra variabler för att stödja MySQL verksamhet och uppgifter . Till exempel ger följande kod för att ansluta till en databasserver och öppna en databas i både MySQL och mysqli : MySQL : $ DBC = mysql_connect ( " localhost " , " användarnamn " , " lösenord " ) ; $ db = mysql_select_database ( " databas " ) ;
mysqli : $ db = new mysqli ( " localhost " , " användarnamn " , " lösenord " , " databas " ) ;
förberedda uttalanden
Kanske den största skillnaden mellan MySQL och mysqli är mysqli stöd för förberedda uttalanden . Med MySQL , måste du vara särskilt försiktig för att undkomma varje sträng som används i en fråga för att förhindra SQL-injektion attacker . Med mysqli och förberedda uttalanden , binder du en uppsättning parametrar i en fråga och ställa in parametrar som motsvarar de olika värden som du vill använda i frågan . Mysqli tar hand om att se till att all kod är ordentligt undan innan det appliceras på databasen . Till exempel , följande kod infogar två recrods till en MySQL tabell med mysqli :
$ stmt = $ db - > förbereda ( " INSERT INTO PEOPLE ( FullName , E ) -värden ( , ) , $ ? ? stmt - > bind_param ( " ss " , $ fullname , $ email ) , $ fullname = " John Johnson " , $ email = " [email protected] " , $ stmt - > execute ( ) ; $ fullname = " Mary Johnson " , $ email = " [email protected] " , $ stmt - > execute ( ) ; $ stmt - > close ( ) ; Addera ditt Effektivitet förbättringar
grund av förberedda uttalanden och andra effektiviseringar bör mysqli förlängning utföra snabbare än motsvarande MySQL uttalanden . Som ni kan se från föregående exempel med hjälp av förberedda uttalanden , är overhead av en insats krävs endast gång , när meddelandet är beredd . med ett motsvarande MySQL insats skulle overhead av insatsen upprepas med varje insats fråga till databasen .
Transaktioner
mysqli ger ytterligare funktionalitet i form av transaktioner . med mysqli förlängning , kan du kombinera en uppsättning dataoperationer ihop till en transaktion och utföra operationer tillsammans som en enda transaktion . Om en operation i transaktionen misslyckas , misslyckas hela verksamheten och eventuella förändringar som har gjorts rullas tillbaka . exempelvis kan du använda en transaktion när du programmerar en överföring av pengar mellan två konton , eftersom inte båda sidor av operationen lyckas , är verksamheten inte en framgång , och du inte vill lämna ett tillstånd där ett konto har debiterats men det andra kontot inte har krediterats .