Apart from the feature list, I suggest you try out both MySQLi and PDO and find out what API design you like most. MySQLi is more powerful and probably more complex to learn. PDO is more elegant and has the advantage that you only need to learn one PHP API if you need to work with different DBMS in the future.Избор на API
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Избор на API
Референца за `mysqlinfo.api.choosing.php` со подобрена типографија и навигација.
Избор на API
PHP нуди различни API за поврзување со MySQL. Подолу ги прикажуваме API-те обезбедени од mysqli и PDO екстензиите. Секое парче код создава врска со MySQL сервер кој работи на "example.com" користејќи го корисничкото име "user" и лозинката "password". И се извршува прашалник за поздравување на корисникот.
Пример #1 Споредба на MySQL API
<?php
// mysqli
$mysqli = new mysqli("example.com", "user", "password", "database");
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);
// PDO
$pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password');
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);Пример #2 Споредба на подготвени изјави
<?php
// mysqli
$mysqli = new mysqli("example.com", "user", "password", "database");
$statement = $mysqli->prepare("SELECT District FROM City WHERE Name=?");
$statement->execute(["Amersfoort"]);
$result = $statement->get_result();
$row = $result->fetch_assoc();
echo htmlentities($row['District']);
// PDO
$pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password');
$statement = $pdo->prepare("SELECT District FROM City WHERE Name=?");
$statement->execute(["Amersfoort"]);
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['District']);Споредба на карактеристики
Вкупните перформанси на двете екстензии се сметаат за исти. Иако перформансите на екстензијата придонесуваат само мал дел од вкупното време на извршување на PHP веб барање. Често, влијанието е ниско, дури 0.1%.
| ext/mysqli | PDO_MySQL | |
|---|---|---|
| PHP верзија воведена | 5.0 | 5.1 |
| Вклучено со PHP 7.x и 8.x | Ограничено од | Ограничено од |
| Статус на развој | Активен | Активен |
| Животен циклус | Активен | Активен |
| Препорачано за нови проекти | Ограничено од | Ограничено од |
| ООП Интерфејс | Ограничено од | Ограничено од |
| Процедурален Интерфејс | Ограничено од | Овозможува пишување |
| API поддржува неблокирачки, асинхрони прашалници со mysqlnd | Ограничено од | Овозможува пишување |
| Постојани врски | Ограничено од | Ограничено од |
| API поддржува карактери | Ограничено од | Ограничено од |
| API поддржува подготвени изјави од страна на серверот | Ограничено од | Ограничено од |
| API поддржува подготвени изјави од страна на клиентот | Овозможува пишување | Ограничено од |
| API поддржува процедури за складирање | Ограничено од | Ограничено од |
| API поддржува повеќе изјави | Ограничено од | Најмногу |
| API поддржува Трансакции | Ограничено од | Ограничено од |
| Трансакциите можат да се контролираат со SQL | Ограничено од | Ограничено од |
| Поддржува цела MySQL 5.1+ функционалност | Ограничено од | Најмногу |