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

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

1405/05/04 23:34 محراب حسن زاده
آموزش کامل و اصولی اتصال 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 پس از اتمام اجرای اسکریپت اتصالات را می‌بندد، اما بستن دستی اتصالات بزرگ به بهینه‌سازی مصرف حافظه سرور کمک شایانی می‌کند.

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش جامع مدیریت خطاها در PHP بر اساس استانداردهای گوگل
1405/05/01 20:23

آموزش جامع مدیریت خطاها در PHP بر اساس استانداردهای گوگل

مطالعه بیشتر
معرفی React.js و بررسی مزایای آن برای توسعه وب و اپلیکیشن
1402/06/28 00:59

معرفی React.js و بررسی مزایای آن برای توسعه وب و اپلیکیشن

مطالعه بیشتر
آموزش کامل ساخت فرم در HTML: از المان‌ها تا نکات سئو
1402/05/21 23:48

آموزش کامل ساخت فرم در HTML: از المان‌ها تا نکات سئو

مطالعه بیشتر
استفاده از clip-path در CSS برای برش‌های زیبا و جذاب: راهنمای کامل
1403/08/16 22:58

استفاده از clip-path در CSS برای برش‌های زیبا و جذاب: راهنمای کامل

مطالعه بیشتر
استفاده از overflow در CSS برای مدیریت محتوای اضافی: راهنمای کامل و کاربردی
1403/08/11 21:37

استفاده از overflow در CSS برای مدیریت محتوای اضافی: راهنمای کامل و کاربردی

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

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

مطالعه بیشتر
آموزش جامع توابع داخلی و پرکاربرد PHP + مثال‌های عملی
1405/04/16 01:18

آموزش جامع توابع داخلی و پرکاربرد PHP + مثال‌های عملی

مطالعه بیشتر
آموزش فیلتر کردن داده‌ها در PHP با توابع filter_var و preg_match
1405/05/13 21:29

آموزش فیلتر کردن داده‌ها در PHP با توابع filter_var و preg_match

مطالعه بیشتر
تفاوت Data و Computed Properties در Vue.js | آموزش کاربردی و مثال‌محور
1404/09/21 23:58

تفاوت Data و Computed Properties در Vue.js | آموزش کاربردی و مثال‌محور

مطالعه بیشتر
آموزش کامل متغیرهای $_GET، $_POST و $_REQUEST در PHP به زبان ساده
1405/05/01 20:01

آموزش کامل متغیرهای $_GET، $_POST و $_REQUEST در PHP به زبان ساده

مطالعه بیشتر
مقایسه کامل و جامع MySQLi و PDO در PHP: کدام یک برای پروژه شما مناسب‌تر است؟
1405/05/04 23:45

مقایسه کامل و جامع MySQLi و PDO در PHP: کدام یک برای پروژه شما مناسب‌تر است؟

مطالعه بیشتر
آموزش کامل کار با اعداد و توابع ریاضی در PHP (کامل و کاربردی)
1405/04/27 21:51

آموزش کامل کار با اعداد و توابع ریاضی در PHP (کامل و کاربردی)

مطالعه بیشتر

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