آموزش رایگان PHP

آموزش کامل و اصولی اتصال PHP به پایگاه داده MySQL (به روش PDO و MySQLi)

4م مرداد 1405 محراب حسن زاده
آموزش کامل و اصولی اتصال PHP به پایگاه داده MySQL (به روش PDO و MySQLi)

مقدمه‌ای بر اتصال PHP به پایگاه داده MySQL

بسیاری از وب‌سایت‌های پویا و مدرن امروزی اطلاعات خود را در پایگاه داده ذخیره می‌کنند. زبان PHP به خوبی با دیتابیس MySQL یکپارچه شده است. برای اتصال PHP به MySQL دو افزونه اصلی و استاندارد وجود دارد: PDO و MySQLi. در این مقاله به بررسی کامل هر دو روش، تفاوت‌های آن‌ها و اصول پیاده‌سازی امن می‌پردازیم.

چرا یادگیری این مبحث اهمیت دارد؟

اتصال صحیح، بهینه و امن به پایگاه داده، ستون فقرات امنیت و کارایی هر برنامه تحت وب است. عدم استفاده از روش‌های صحیح می‌تواند وب‌سایت شما را در معرض حملات خطرناکی مانند SQL Injection قرار دهد. گوگل نیز به امنیت وب‌سایت‌ها اهمیت ویژه‌ای می‌دهد و کدهای استاندارد نقشی حیاتی در این امر دارند.

روش اول: استفاده از PDO (توصیه شده)

عبارت PDO مخفف PHP Data Objects است. این روش شی‌ءگرا بوده و از چندین پایگاه داده مختلف (مانند PostgreSQL، SQLite، Oracle و MySQL) پشتیبانی می‌کند. مزیت بزرگ PDO این است که اگر تصمیم بگیرید پایگاه داده خود را تغییر دهید، نیازی به بازنویسی کامل کدهای پروژه نخواهید داشت.

نمونه کد اتصال با PDO


$host = 'localhost';
$db   = 'my_website_db';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            =--> PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

try {
     $pdo = new PDO($dsn, $user, $pass, $options);
     echo "اتصال با موفقیت برقرار شد!";
} catch (\PDOException $e) {
     throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

روش دوم: استفاده از MySQLi (به روش شی‌ءگرا)

افزونه MySQLi (که حرف i در آن مخفف Improved یا بهبود یافته است) به طور اختصاصی برای پایگاه داده MySQL توسعه داده شده است. این افزونه به دو صورت رویه‌ای (Procedural) و شی‌ءگرا (Object-Oriented) قابل استفاده است. در این بخش روش نوین و استاندارد شی‌ءگرای آن را بررسی می‌کنیم.

نمونه کد اتصال با MySQLi


$host = 'localhost';
$user = 'root';
$pass = '';
$db   = 'my_website_db';

// ایجاد شیء اتصال
$conn = new mysqli($host, $user, $pass, $db);

// بررسی خطای اتصال
if ($conn--->connect_error) {
    die("اتصال ناموفق بود: " . $conn->connect_error);
}
echo "اتصال به روش MySQLi با موفقیت انجام شد!";

// بستن اتصال پس از اتمام کار
$conn->close();

مقایسه PDO و MySQLi: کدام بهتر است؟

برای تصمیم‌گیری بهتر میان این دو روش، جدول زیر تفاوت‌های کلیدی آن‌ها را خلاصه می‌کند:

  • پشتیبانی از دیتابیس‌های مختلف: روش PDO از ۱۲ سیستم مدیریت پایگاه داده مختلف پشتیبانی می‌کند، در حالی که MySQLi فقط مخصوص MySQL است.
  • امنیت و Prepared Statements: هر دو روش از دستورات آماده پشتیبانی می‌کنند که مانع تزریق کد (SQL Injection) می‌شود.
  • مدیریت خطاها: PDO از ساختار مدرن try-catch و Exceptionها استفاده می‌کند که خطایابی را بسیار راحت‌تر می‌سازد.

نکات امنیتی طلایی در اتصال پایگاه داده

  1. هرگز اطلاعات حساس دیتابیس را هاردکد نکنید: همیشه اطلاعات ورود به دیتابیس را در فایل‌های پیکربندی خارج از پوشه عمومی وب (مانند فایل .env) نگهداری کنید.
  2. استفاده از UTF-8: برای پشتیبانی کامل از زبان فارسی و شکلک‌ها، حتماً ساختار ارتباطی (Charset) را بر روی utf8mb4 تنظیم کنید.
  3. بستن اتصالات باز: اگرچه PHP پس از اتمام اجرای اسکریپت اتصالات را می‌بندد، اما بستن دستی اتصالات بزرگ به بهینه‌سازی مصرف حافظه سرور کمک شایانی می‌کند.

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش کامل $_SERVER در PHP: راهنمای جامع متغیرهای سوپرگلوبال سرور
1م مرداد 1405

آموزش کامل $_SERVER در PHP: راهنمای جامع متغیرهای سوپرگلوبال سرور

مطالعه بیشتر
آموزش کامل حلقه foreach در PHP برای پیمایش آرایه‌ها (به زبان ساده)
4م تیر 1405

آموزش کامل حلقه foreach در PHP برای پیمایش آرایه‌ها (به زبان ساده)

مطالعه بیشتر
آموزش موقعیت‌بندی المان‌ها با استفاده از position در CSS: نحوه استفاده از absolute، relative و fixed
5م شهریور 1402

آموزش موقعیت‌بندی المان‌ها با استفاده از position در CSS: نحوه استفاده از absolute، relative و fixed

مطالعه بیشتر
آموزش جامع پارامترها و مقادیر بازگشتی در PHP (بر اساس استانداردهای مدرن)
16م تیر 1405

آموزش جامع پارامترها و مقادیر بازگشتی در PHP (بر اساس استانداردهای مدرن)

مطالعه بیشتر
آموزش جامع حلقه‌های while و do while در PHP به زبان ساده و کاربردی
4م تیر 1405

آموزش جامع حلقه‌های while و do while در PHP به زبان ساده و کاربردی

مطالعه بیشتر
آموزش Event Handling و v-on در Vue.js | مدیریت رویدادها با مثال کاربردی
22م آذر 1404

آموزش Event Handling و v-on در Vue.js | مدیریت رویدادها با مثال کاربردی

مطالعه بیشتر
آموزش کامل ثابت‌ها در PHP: تفاوت عمیق define و const طبق استانداردهای گوگل
24م خرداد 1405

آموزش کامل ثابت‌ها در PHP: تفاوت عمیق define و const طبق استانداردهای گوگل

مطالعه بیشتر
Lifecycle Hooks در Vue.js | مدیریت چرخه حیات کامپوننت‌ها با مثال کاربردی
29م آذر 1404

Lifecycle Hooks در Vue.js | مدیریت چرخه حیات کامپوننت‌ها با مثال کاربردی

مطالعه بیشتر
آموزش کامل دریافت اطلاعات فرم با متدهای GET و POST در PHP (با رعایت اصول امنیتی)
27م تیر 1405

آموزش کامل دریافت اطلاعات فرم با متدهای GET و POST در PHP (با رعایت اصول امنیتی)

مطالعه بیشتر
مدیریت خطاها در Async/Await و Promises در جاوا اسکریپت: راهنمای کامل با مثال‌های عملی
30م مهر 1403

مدیریت خطاها در Async/Await و Promises در جاوا اسکریپت: راهنمای کامل با مثال‌های عملی

مطالعه بیشتر
آموزش استفاده از position در CSS: نحوه موقعیت‌دهی عناصر در صفحات وب
9م آبان 1403

آموزش استفاده از position در CSS: نحوه موقعیت‌دهی عناصر در صفحات وب

مطالعه بیشتر
مفاهیم پیشرفته در کلاس‌ها و وراثت (Super, Extends) در جاوا اسکریپت: راهنمای کامل و مثال‌ها
29م مهر 1403

مفاهیم پیشرفته در کلاس‌ها و وراثت (Super, Extends) در جاوا اسکریپت: راهنمای کامل و مثال‌ها

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد