MySQL срещу MySQLi от PHP

MySQL срещу MySQLi от PHP.

Обектно ориентирана структура

MySQLi предоставя набор от функции за кодова структура с процедурен стил, за да улесни прехода към MySQL. Обаче, тя също така осигурява функционалност чрез набор от обектно-ориентирани класове. Използването на обектно ориентиран стил може да направи MySQL интеграцията по-подходяща за обектно-ориентираните функции на PHP версия 5 и често елиминира необходимостта от създаване на допълнителни променливи, които да поддържат MySQL операции и задачи. Например, следното показва кода за свързване към сървър на базата данни и отваря база данни в MySQL и в MySQL: MySQL: $ dbc = mysql_connect ("localhost", "user", "password"); $ db = mysql_select_database ("база данни");

MySQLi: $ db = нов mysqli ("localhost", "потребител", "парола", "база данни");

Приготвени инструкции

Може би най-голямата разлика между MySQL и MySQLi е подкрепата на последния за подготвени инструкции. С MySQL трябва да бъдете особено внимателни да използвате изявлението за бягство във всеки низ, използван в заявката, за да предотвратите атаките на SQL инжектиране. С MySQLi и подготвените инструкции можете да свържете множество от параметри към заявка и да я сравнявате с различните стойности, които искате да използвате в заявката. MySQLi е отговорен да гарантира, че извлечението за излизане се използва по подходящ начин в целия код, преди да се приложи в базата данни. Например, следният код вмъква две записи в MySQL таблица, използвайки MySQLi:

$ stmt = $ db-> prepare ("INSERT INTO PEOPLE (FullName, Email) стойности (?, ?); $ stmt-> bind_param (" ss ", $ fullname, $ email) $ fullname =" John Johnson "; $ email = "[email protected]"; $ stmt-> execute (); $ fullname = "Мери Джонсън"; $ email = "[email protected]"; $ stmt-> execute (); $ stmt-> close ();

Подобрения на ефективността

Благодарение на подготвените инструкции и други подобрения на ефективността MySQL разширението трябва да изпълнява по-бързо от еквивалентните инструкции на MySQL. Както можете да видите в предишния пример, като използвате подготвени инструкции, претоварването на една вложка се изисква само веднъж, когато инструкцията е подготвена. С еквивалентно вмъкване в MySQL, претоварването на вмъкването трябва да се повтаря с всяка заявка към базата данни.

отношения

MySQLi предоставя допълнителна функционалност под формата на транзакции. С разширението MySQLi можете да групирате набор от операции по дадена транзакция и да изпълните операциите заедно като една транзакция. Ако операцията по транзакцията се окаже неуспешна, цялата операция се провали и всички направени промени се отменят. Например можете да използвате транзакция при планиране на паричен превод между два профила, защото, освен ако двете страни на операцията не са успешни, операцията не е успешна и не искате да оставяте държавата, в която е бил дебитиран акаунт но другият не е акредитиран.