Co jest lepsze, MySQL czy MySQLi? I dlaczego? Którego powinienem użyć?
Mam na myśli lepsze nie tylko pod względem wydajności, ale wszelkich innych istotnych funkcji.
Co jest lepsze, MySQL czy MySQLi? I dlaczego? Którego powinienem użyć?
Mam na myśli lepsze nie tylko pod względem wydajności, ale wszelkich innych istotnych funkcji.
Odpowiedzi:
Jeśli spojrzysz na Ulepszony przegląd rozszerzeń MySQL , powinien on powiedzieć wszystko, co musisz wiedzieć o różnicach między nimi.
Główne przydatne funkcje to:
mysql_*()
jest obecnie przestarzały i wkrótce zostanie usunięty . Nie powinieneś go używać do nowego kodu.
Istnieje strona podręcznika poświęcona pomocy przy wyborze między mysql, mysqli i PDO pod adresem
Zespół PHP zaleca mysqli lub PDO_MySQL do nowego rozwoju:
Zalecane jest użycie rozszerzeń mysqli lub PDO_MySQL. Nie zaleca się używania starego rozszerzenia mysql do nowych programów. Poniżej przedstawiono szczegółową macierz porównawczą funkcji. Uważa się, że ogólna wydajność wszystkich trzech rozszerzeń jest mniej więcej taka sama. Chociaż wydajność rozszerzenia stanowi tylko ułamek całkowitego czasu wykonywania żądania internetowego PHP. Często wpływ ten wynosi zaledwie 0,1%.
Strona zawiera również zestawienie funkcji porównujące interfejsy API rozszerzeń. Główne różnice między mysqli i mysql API są następujące:
mysqli mysql
Development Status Active Maintenance only
Lifecycle Active Long Term Deprecation Announced*
Recommended Yes No
OOP API Yes No
Asynchronous Queries Yes No
Server-Side Prep. Statements Yes No
Stored Procedures Yes No
Multiple Statements Yes No
Transactions Yes No
MySQL 5.1+ functionality Yes No
* http://news.php.net/php.internals/53799
Istnieje dodatkowa macierz funkcji porównująca biblioteki (nowe mysqlnd i libmysql) w
i bardzo dokładny artykuł na blogu pod adresem
Porzuciłem używanie mysqli. Jest po prostu zbyt niestabilny. Miałem zapytania, które powodowały awarię PHP przy użyciu mysqli, ale działały dobrze z pakietem mysql. Również mysqli ulega awarii w kolumnach LONGTEXT . Ten błąd był zgłaszany w różnych formach od co najmniej 2005 roku i pozostaje uszkodzony . Szczerze chciałbym używać przygotowanych instrukcji, ale mysqli po prostu nie jest wystarczająco wiarygodne (i nikt nie ma ochoty go naprawiać). Jeśli naprawdę chcesz przygotowanych wyciągów, idź z PDO.
Lepsze jest PDO; jest to mniej okrutny interfejs, a także zapewnia te same funkcje, co MySQLi.
Korzystanie z przygotowanych instrukcji jest dobre, ponieważ eliminuje możliwości wstrzykiwania SQL; używanie instrukcji przygotowanych po stronie serwera jest złe, ponieważ zwiększa liczbę obiegów.
dla mnie gotowe zestawienia to pozycja obowiązkowa. dokładniej, wiązanie parametrów (które działa tylko na przygotowanych instrukcjach). jest to jedyny naprawdę rozsądny sposób wstawiania ciągów znaków do poleceń SQL. naprawdę nie ufam funkcjom „ucieczki”. połączenie DB jest protokołem binarnym, po co używać podprotokołu z ograniczeniami ASCII dla parametrów?