آموزش وردپرس
خانه - سورس - PHP - مقایسهPDO و Mysqli در PHP
compare mysqli via pdo in php

مقایسهPDO و Mysqli در PHP

زمانی که میخواهیم در php  به دیتابیس دسترسی داشته باشیم دو انتخاب داریم : MySqli و PDO . میدانید کدام یک را باید انتخاب کنید؟ در این مقاله به بررسی تفاوت ها ، پایداری ، پشتیبانی از دیتابیس های مختلف و … در PDO  و MySqli میپردازیم.

 

compare mysqli via pdo in php

 

اتصال به بانک اطلاعاتی

در PDO و MySqli اتصال به دیتابیس به راحتی امکان پذیر است :

 

در  MySqli استفاده از توابع هم به صورت “روالی” (procedural) و هم به صورت شیء گرا امکان پذیر است. اگر به توابع پیش فرض mysql در php آشنایی دارید استفاده از mysqli  به صورت رویه ای برای شما بهتر و راحت تر است. اما اگر به شیء گرایی مسلط هستید، می توانید از هر دو استفاده نمایید.

پشتیبانی از بانک های اطلاعاتی

یکی از فواید استفاده از PDO نسبت به Mysqli  تعداد دیتابیس هایی است که پشتیبانی میکنند. PDO از ۱۲ نوع دیتابیس مختلف پشتیبانی میکند، در حالی که MySqli فقط از mysql پشتیبانی می نماید.
برای دیدن نام دیتابیس های پشتیبانی شده در PDO میتونید از دستور زیر استفاده کنید :

هنگامی که در یک پروژه بخواهید از یک دیتابیس به دیتابیس دیگری مهاجرت کنید، PDO این کار را به راحتی برایتان مقدور می سازد. تمام کاری که باید انجام دهید ، این است که نوع اتصال و query هایی که باید در دیتابیس جدید پشتیبانی شوند را تغییر دهید.اما با mySqli باید تمام کدها و کوئری ها تغییر نماید.

 

Named Parameters

این قابلیت نیز یکی دیگر از فواید استفاده از PDO نسبت به MySqli است که به طور قابل ملاحظه ای کار را ساده تر مینماید :

Named Parameters به روشی گفته میشود که درکد بالا استفاده شده است. این روش خوانایی برنامه را به مراتب بالا می برد؛ در مقابل MySqli از Named Parameters پشتیبانی نمی نماید :

 

Object Mapping

هم PDO و هم MySqli از Object mapping پشتیبانی میکنند  به این معنی که اگر شما نمیخواهید از یک DAL (Database Abstraction layer) استفاده کنید اما میخواهید رفتاری شبیه به یک ORM داشته باشید ،میتوانید از یکی از این دو استفاده کنید. تصور کنید که یک کلاس به اسم User داریم با تعدادی properties که همنام با فیلدهای جدول User هستند :

حتما بخوانید  سورس نرم افزار مدیریت رستوران رضا-سی شارپ

 

بدون Object Mapping قبل از استفاده از متد info باید به property های کلاس مقدار دهی نماییم ( یا به صورت دستی یا به وسیله constructor) . این قابلیت اجازه میدهد که قبل از ساخت شی، property ها مقدار دهی شوند :

 

امنیت

یک از روشهای هک سایت استفاده از Sql Injection  است که هکر با قرار دادن کدهای sql در مقادیر ارسالی به سایت سعی میکند به سایت حمله نماید. این راه معمولا از طریق آدرسهایی انجام میشود که از متد GET برای ارسال مقادیر به سرور استفاده میکنند :

http://domain.com/index.php?username=phpro; DELETE FROM users;

اگر ما بدون escape کردن متغیر  $_GET[‘username’] از آن استفاده نماییم ، دستور DELETE هم در دیتابیس اجرا خواهد شد :

PDO::quote در واقع رشته ورودی رو escape نمیکند ، بلکه فقط quote میکند (بین دو ‘ ‘ قرار میدهد) . اما درمقابل mysqli_real_escap_string یک رشته امن برای دیتابیس میسازد:
 پیشنهاد میکنیم همیشه برای اجرای query ها و به جای quote  و mysqli_real_escape_string از دستور prepare استفاده کنید.

 

کارآیی و سرعت عملکرد

PDO و Mysqli هر دو از سرعت و کارایی بالای برخوردار هستند. در benchmark این دو ، Mysqli مقداری سریعتر از PDO کارها را اجرایی می نماید. اما توابع داخلی mysql از سرعت بسیار بیشتری برخوردار هستند.

 

نتیجه گیری

بدون شک PDO با پشتیبانی از ۱۲ نوع دیتابیس مختلف ، پشتیبانی از Named Parameters ، و چشم پوشی از  مقدار کمی عقب ماندگی در سرعت نسبت به MySqli برنده این مسابقه است.در مورد امنیت هم که دیدیم تا زمانی که شما از prepare استفاده کنید هر دو ، عملکرد قابل پذیرشی دارند.

درباره ی مدیر سامانه

Mr.Code هستم . به صورت تخصصی در زمینه برنامه نویسی سازمانی و طراحی وبسایت و پرتال و طراحی اپلیکیشن اندروید فعالیت دارم .

همچنین ببینید

php

آموزش PHP – جلسه اول – ساختار PHP

در اولین جلسه از آموزش PHP میخواهیم با آموزش ساختار PHP بپردازیم.ساختار PHP با استفاده …

یک دیدگاه

  1. سلام می می خواهم کاری کنم که در ویژاول بیسیک دکمه Command1 یکی از نرم افزار های نصب شده در رایانه یا یک شرتکات را اجرا کنم
    دارم برای ویندوز 7 یکی شات داون دیالگ می نویسم یک شرتکات روی دسکتاپ درست کردم که با کلیک کردن روش رایانه بلافاصله خاموش می شه همین طور برای ریستارت و استند بای حالا می خواستم فرم من به این حالته که
    اگر گزینه یک تیک باشه و Ok رو بزنی کامپیوتر استندبای بشه یعنی شرتکات اول اجرا بشه که نمی دونم چه دستوری تو ویژوال بیسیک این کار رو می کنه
    اگه گزینه دو تیک باشه شات داون می شه …
    گزینه 3 تیک باشه ریستارت می شه
    و گزینه 4 (reastart to Ms-dos Mode) تیک باشه از اون جایی که ویندوز 7 ms-dos مستقل نداره و ms-dos تحت ویندوز هستش به جای ریستارت شدن و بوت شدن تهت داس که فقط تو ویدوز 98 امکان پذیره به جاش بدون خاموش شدن نرم افزار Dosbox (نرم افزاریه برای شبیه سازی محیط داس و اجرا بازی های قدیمی) در حالت fullscrean اجرا بشه

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *