MySQL Vs. MySQLi da PHP

MySQL Vs. MySQLi da PHP.

Struttura orientata agli oggetti

MySQLi fornisce un set di funzioni per una struttura di codice con stile procedurale per facilitare la transizione di MySQL. Tuttavia, fornisce anche funzionalità attraverso un insieme di classi orientate agli oggetti. L'uso dello stile orientato agli oggetti può rendere l'integrazione di MySQL più adatta alle funzionalità orientate agli oggetti di PHP versione 5 e spesso elimina la necessità di creare variabili aggiuntive per supportare operazioni e operazioni MySQL. Ad esempio, quanto segue mostra il codice per connettersi a un server di database e aprire un database in MySQL e in MySQLi: MySQL: $ dbc = mysql_connect ("localhost", "user", "password"); $ db = mysql_select_database ("database");

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

Istruzioni preparate

Forse la più grande differenza tra MySQL e MySQLi è il supporto di quest'ultimo per le istruzioni preparate. Con MySQL dovresti stare particolarmente attento a usare l'istruzione escape in ogni stringa utilizzata in una query per prevenire attacchi SQL injection. Con MySQLi e le istruzioni preparate è possibile collegare insiemi di parametri a una query e abbinare quest'ultima con i diversi valori che si desidera utilizzare nella query. MySQLi è responsabile di garantire che l'istruzione escape sia utilizzata in modo appropriato in tutto il codice prima che venga applicata nel database. Ad esempio, il seguente codice inserisce due record in una tabella MySQL usando MySQLi:

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

Miglioramenti di efficienza

A causa delle istruzioni preparate e di altri miglioramenti in termini di efficienza, l'estensione MySQL dovrebbe essere più veloce delle equivalenti istruzioni MySQL. Come potete vedere nell'esempio precedente usando le istruzioni preparate, il sovraccarico di un inserto è richiesto solo una volta, quando l'istruzione viene preparata. Con un'istruzione di inserimento equivalente in MySQL, il sovraccarico dell'inserto dovrebbe essere ripetuto con ogni query sul database.

relazioni

MySQLi offre funzionalità aggiuntive sotto forma di transazioni. Con l'estensione MySQLi è possibile raggruppare una serie di operazioni sui dati in una transazione ed eseguire le operazioni insieme come una singola transazione. Se un'operazione di transazione non riesce, l'intera operazione non riesce e tutte le modifiche apportate vengono annullate. Ad esempio, è possibile utilizzare una transazione quando si pianifica un trasferimento di denaro tra due account perché, a meno che entrambi i lati dell'operazione non abbiano esito positivo, l'operazione non ha esito positivo e non si desidera lasciare uno stato in cui è stato addebitato un account ma l'altro non è stato accreditato.