MySQL Vs. MySQLi din PHP

MySQL Vs. MySQLi din PHP.

Structura orientată pe obiecte

MySQLi oferă un set de funcții pentru o structură de cod cu stil procedural pentru a facilita tranziția MySQL. Cu toate acestea, oferă și funcționalitate printr-un set de clase orientate pe obiecte. Utilizarea stilului orientat pe obiecte poate face ca integrarea MySQL să fie mai potrivită pentru caracteristicile orientate pe obiecte ale versiunii PHP 5 și deseori elimină nevoia de a crea variabile suplimentare pentru a sprijini operațiile și sarcinile MySQL. De exemplu, în continuare se afișează codul pentru conectarea la un server de baze de date și se deschide o bază de date în MySQL și în MySQL: MySQL: $ dbc = mysql_connect ("localhost", "user", "password"); $ db = mysql_select_database ("baza de date");

MySQLi: $ db = noul mysqli ("localhost", "user", "password", "database");

Instrucțiuni pregătite

Poate că cea mai mare diferență dintre MySQL și MySQLi este sprijinul acestuia din urmă pentru instrucțiunile pregătite. Cu MySQL trebuie să fiți deosebit de atenți să utilizați instrucțiunea de evadare din fiecare șir utilizat într-o interogare pentru a preveni atacurile de tip SQL. Cu MySQLi și instrucțiunile pregătite puteți să conectați seturi de parametri la o interogare și să le potriviți cu celelalte valori pe care doriți să le utilizați în interogare. MySQLi este responsabil pentru a se asigura că declarația de evadare este utilizată corespunzător în întregul cod înainte de a fi aplicată în baza de date. De exemplu, următorul cod introduce două înregistrări într-o tabelă MySQL utilizând MySQLi:

$ stmt = $ db-> prepare ("INSERT INTO PEOPLE (FullName, Email) valori (?, ?); $ stmt-> bind_param (" ss ", $ fullname, $ email); $ email = "[email protected]"; $ stmt-> execute (); $ fullname = "Mary Johnson"; $ email = "[email protected]"; $ stmt-> execute (); $ stmt-> închide ();

Eficiența îmbunătățirilor

Datorită instrucțiunilor pregătite și a altor îmbunătățiri ale eficienței, extensia MySQL trebuie să funcționeze mai repede decât instrucțiunile echivalente MySQL. După cum puteți vedea în exemplul anterior folosind instrucțiunile pregătite, supraîncărcarea unei inserții este necesară doar o dată, când instrucțiunea este pregătită. Cu o instrucțiune de inserare echivalentă în MySQL, suprasarcina insertului ar trebui repetată cu fiecare interogare către baza de date.

relații

MySQLi oferă funcționalități suplimentare sub formă de tranzacții. Cu extensia MySQLi puteți grupa un set de operații de date într-o tranzacție și puteți executa operațiile împreună ca o singură tranzacție. Dacă o operațiune de tranzacție nu reușește, întreaga operațiune nu reușește și toate modificările care au fost făcute sunt inversate. De exemplu, este posibil să utilizați o tranzacție atunci când planificați un transfer de bani între două conturi, deoarece, cu excepția cazului în care ambele părți ale operației au succes, operațiunea nu are succes și nu doriți să lăsați o stare în care un cont a fost debitat dar celălalt nu a fost acreditat.