MySQL, MySQLi və PDO

Hamımızın bildiyimiz kimi, MySQL Strukturlaşdırılmış Sorğu Dilindən (SQL) istifadə edən Açıq Mənbəli Əlaqəli Verilənlər Bazasının İdarəetmə Sistemidir (RDBMS). MySQL demək olar ki, hər bir Açıq Mənbəli PHP tətbiqinin vacib hissəsidir.

PHP əvvələr MySQL versiyalarını dəstəkləyən xüsusi "extensions" birlikdə gəlirdi. Ancaq sona bunlar MySQLi inkişaf etdirmək üçün ləğv edildi. Eyni zamanda PHP dahada inkişaf etdi və eyni zamanda bir çox verilənlər bazası tipi ilə işləmək üçün PDO(PHP Data Objects) çıxdı.

MySQLi-a MySQL bir üst versiyası kimi baxa bilərsiniz.(Təbii ki, bağlantılar üçün)

PHP Data Objects (PDO) PHP-də verilənlər bazasına daxil olmaq üçün yüngül, ümumi interfeysi müəyyən edir. PDO tərəfindən dəstəklənən hər bir verilənlər bazası tipi (MySQL, MS SQL, SQLite və s) verilənlər bazasına spesifik xüsusiyyətləri, eləcə də ümumi funksiyaları icra edə bilər.

PDO məlumat girişi abstraksiya qatını(abstraction layer) təmin edir, bu o deməkdir ki, istifadə etdiyiniz verilənlər bazası növündən asılı olmayaraq sorğuları yerinə yetirmək və nəticələri əldə etmək üçün eyni funksiyalar mövcuddur


MySQLi və PDO istifadə edərək qoşulma fərqi

İstər PDO, istərsə də MySQLi funksiyaları üçün Obyekt yönümlü interfeys təklif edir, lakin MySQLi eyni zamanda yeni gələnlərin başa düşməsini asanlaşdıran prosedur API təklif edir. Orijinal PHP MySQL işləməsi ilə tanışsınızsa, prosedur MySQLi interfeysini daha asan mənimsəyəcəksiniz.

Nümunə:

// PDO 
$pdo = new PDO( "mysql:" . "host=localhost;" . "dbname=database",
'username', 'password'); // mysqli, procedural
$mysqli = mysqli_connect( 'localhost', 'username', 'password', 'database'); // mysqli, object oriented
$mysqli = new mysqli( 'localhost', 'username', 'password', 'database');

PDO-nun MySQLi-dən əsas üstünlüyü verilənlər bazası dəstəyindədir. PDO yalnız MySQL-i dəstəkləyən MySQLi-dən fərqli olaraq 12 müxtəlif verilənlər bazası növünü dəstəkləyir.

Layihənizi başqa verilənlər bazasından istifadə etmək üçün dəyişməli olduğunuz zaman, PDO prosesi asanlaşdırır. Beləliklə, sizə lazım olan yeganə şey, yeni verilənlər bazanız tərəfindən dəstəklənməyən hər hansı sintaksisdən istifadə edərsə, əlaqə sətirini və ən çox bir neçə sorğunu dəyişdirməkdir :)

PDO, MySQLi, MySQL Performans müqayisəsi

Bir neçə il əvvəl Jonathan Robson və Radu Potop tərəfindən bəzi PHP MySQL performans testləri var idi. Baxmayaraq ki, bu testlər artıq köhnəlib və versiyalar daha fərqlidir amma qısada olsa istinad kimi nəzərdən keçirək.

Əsasən onlar göstərir ki, hazırlanmış ifadələrdən istifadə edərək SELECT sorğuları üçün MySQLi bir az daha sürətli işləyir. Amma bu məqsədinizdən asılı olaraq əhəmiyyətli olmaya bilər.

Qeyd edək ki, PDO standart olaraq proqramçı tərəfindən hazırlanmış ifadə bərabərləşməsindən istifadə edir. Yerli olaraq hazırlanmış ifadələrdən istifadə edərkən, bəyanatı hazırlamaq üçün serverə əlavə sorğular olur, ona görə də ümumi sorğunun icra müddəti sorğunu yalnız bir dəfə yerinə yetirmək üçün yerli olaraq hazırlanmış ifadələrdən istifadə etməkdən daha uzun ola bilər.

Orijinal MySQL genişlənməsindən istifadə edərkən dinamik parametrlərdən sitat gətirmək üçün mysqli_real_escape_string funksiyasından istifadə edə bilərsiniz. Bu, hazırlanmış sorğuları təqlid etməyə bənzəyir, çünki onlar PDO ilə edilir, çünki nəticəni almaq üçün serverə əlavə sorğu lazım olmayacaq.

 PDO və MySQLi istifadəsi

MySQLi-nin MySQL server xüsusiyyətlərinə daxil olmaqda üstünlükləri olsa da, PDO-nun istifadəsi daha çox olur və şəxsi üstünlüklərdən və rahatlıqdan asılı olaraq istifadəçi üçün daha uyğun ola bilir. 

MySQLi yalnız MySQL verilənlər bazaları ilə işləyir, PDO isə çevikdir və IBM, Oracle və MySQL daxil olmaqla bir çox verilənlər bazası sistemləri ilə işləməyi bacarır. Əgər siz nə vaxtsa verilənlər bazalarını dəyişdirməli və ya verilənlər bazası müstəqil həllini təmin etməlisinizsə, MySQLi-dən birbaşa istifadə etmək yaxşı seçim deyil.

MySQLi ilə kod yazmaq PDO ilə olduğu kimi asan və çevik deyil. MySQLi nömrələnmiş parametr sistemindən istifadə edir və PDO kimi adlanmış parametrləri dəstəkləmir. MySQLi yaxşı dəstək və texniki xidmətə malikdir, bu da yeni sistemə keçidi və ondan istifadəni təhlükəsiz və etibarlı edir.

Siz MySQL serverlərinin daha yeni versiyalarında mövcud olan yeni funksiyalardan istifadə edə biləcəksiniz. Bu MySQLi-nin ən böyük üstünlüklərindən biridir. PDO-nun MySQL-in yeni imkanlarından tam istifadə etmək üçün geniş dəstəyi olmaya bilər.