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.
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:
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:
* 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
źródło
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.
źródło
MySQLi oznacza ulepszony MySQL. Jest to zorientowany obiektowo interfejs do powiązań MySQL, który ułatwia korzystanie z rzeczy. Oferuje również obsługę przygotowanych zestawień (które są bardzo przydatne). Jeśli korzystasz z PHP 5, użyj MySQLi.
źródło
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.
źródło
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?
źródło