De release van PHP versie 5 Inclusief een nieuwe extensie voor toegang tot MySQL databases MySQL genaamd Verbeterde of MySQLi . MySQLi biedt verbeterde prestaties , een object - georiënteerde structuur , ondersteuning voor prepared statements en extra functionaliteit in de vorm van database- transacties . De huidige MySQL- extensie zal niet worden verbeterd , bijvoorbeeld om unicode ondersteuning te bieden , en zal uiteindelijk worden afgebouwd beginnen met PHP versie 6 . Object - Oriented Structuur MySQLi biedt een reeks functies voor een procedureel - style code structuur om de overgang van MySQL gemakkelijker te maken . Maar het biedt ook functionaliteit door middel van een set van object - georiënteerde klassen . Met behulp van een object - georiënteerde stijl kan maken van de MySQL- integratie past beter met PHP versie 5 object - georiënteerde functies en elimineert vaak de behoefte om extra variabelen te creëren om MySQL operaties en taken te ondersteunen . Bijvoorbeeld , de volgende laat de code om verbinding met een database server en een database opent in zowel MySQL en MySQLi : MySQL : $ dbc = mysql_connect ( " localhost " , "user " , " wachtwoord" ) ; $ db = mysql_select_database ( " databank " ) ; mySQLi : $ db = new mysqli ( " localhost " , "user " , " password " , " databank " ) ; < br > prepared statements Misschien wel het grootste verschil tussen MySQL en MySQLi is ondersteuning MySQLi voor prepared statements . Met MySQL , je moet er nauwlettend op elke tekenreeks die wordt gebruikt in een query om SQL-injectie aanvallen te voorkomen ontsnappen . Met MySQLi en prepared statements , u een set parameters binden aan een query en stel de parameters gelijk zijn aan de verschillende waarden die u wilt gebruiken in de query . MySQLi zorgt ervoor te zorgen dat alle code goed ontsnapt voordat het wordt toegepast op de database. Bijvoorbeeld , de volgende code voegt twee recrods in een MySQL tabel met MySQLi : $ stmt = $ db - > bereiden ( " INSERT INTO PEOPLE ( FullName , E )-waarden ( , ) ; $ ? stmt - > bind_param ( " ss " , $ fullname , $ email ) ; $ fullname = " John Johnson " ; $ email = " [email protected] " ; $ stmt - > execute ( ) ; $ fullname = " Mary Johnson " ; $ email = " [email protected] " ; $ stmt - > execute ( ) ; $ stmt - > close ( ) ; Efficiency verbeteringen Vanwege prepared statements en andere efficiencyverbeteringen , moet de MySQLi extensie sneller dan gelijkwaardige MySQL statements uit te voeren . Zoals u kunt zien uit het vorige voorbeeld met prepared statements , is de overhead van een insert alleen vereist een keer , wanneer de verklaring wordt opgesteld . met een equivalente MySQL insert , zou de overhead van de insert herhaald worden met elke insert query naar de database. Transacties MySQLi zorgt voor extra functionaliteit in de vorm van transacties . Met de MySQLi extensie , kunt u een set van data operaties samen te bundelen in een transactie en samen voeren de operaties als een enkele transactie . Indien een operatie in de transactie mislukt , de hele operatie mislukt en de eventuele veranderingen die zijn gemaakt, zijn teruggedraaid . bijvoorbeeld , zou u een transactie te gebruiken bij het programmeren van een overdracht van geld tussen twee accounts , want tenzij beide kanten van de operatie slaagt , de operatie is geen succes , en je wilt niet laat dan een staat waar men rekening is gedebiteerd , maar de andere account is niet bijgeschreven .
|