Що краще, MySQL чи MySQLi? І чому? Який я повинен використовувати?
Я маю на увазі краще не просто з точки зору продуктивності, а будь-якої іншої відповідної функції.
Що краще, MySQL чи MySQLi? І чому? Який я повинен використовувати?
Я маю на увазі краще не просто з точки зору продуктивності, а будь-якої іншої відповідної функції.
Відповіді:
Якщо ви ознайомилися з оглядом покращеного розширення MySQL , він повинен повідомити вам все, що вам потрібно знати про відмінності між ними.
Основні корисні функції:
mysql_*()
тепер застаріла і незабаром буде видалена . Не слід використовувати його для нового коду.
Існує сторінка керівництва, присвячена допомозі вибору між mysql, mysqli та PDO на
Команда PHP рекомендує mysqli або PDO_MySQL для нової розробки:
Рекомендується використовувати або розширення mysqli, або PDO_MySQL. Не рекомендується використовувати старе розширення mysql для нової розробки. Нижче представлена детальна матриця порівняння функцій. Загальна продуктивність усіх трьох розширень вважається приблизно однаковою. Хоча продуктивність розширення сприяє лише частці загального часу запуску веб-запиту PHP. Найчастіше вплив становить від 0,1%.
На сторінці також є матриця функцій, яка порівнює API розширення. Основні відмінності між mysqli та mysql API полягають у наступному:
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
Існує додаткова матриця функцій, яка порівнює бібліотеки (новий mysqlnd проти libmysql) на
і дуже ретельна стаття в блозі на сайті
Я відмовився від використання mysqli. Це просто занадто нестабільно. У мене були запити, які розбивають PHP за допомогою mysqli, але добре працюють з пакунком mysql. Також mysqli збоїв у стовпцях LONGTEXT . Ця помилка піднімалася в різних формах щонайменше з 2005 року та залишається порушеною . Я чесно хотів би використовувати підготовлені заяви, але mysqli просто недостатньо надійний (і, здається, ніхто не турбує це виправити). Якщо ви дійсно хочете підготованих заяв, перейдіть із PDO
для мене підготовлені заяви є обов'язковою особливістю. точніше, прив'язка параметрів (яка працює лише на підготовлених операторах). це єдиний дійсно розумний спосіб вставити рядки в команди SQL. я дійсно не довіряю функціям "втечі". з'єднання БД є бінарним протоколом, чому для параметрів використовувати підпротокол з обмеженою ASCII?