آموزش رایگان 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 با HTML، CSS و JavaScript؛ راهنمای جامع و ساده برای مبتدیان
1405/03/21 01:06

تفاوت PHP با HTML، CSS و JavaScript؛ راهنمای جامع و ساده برای مبتدیان

مطالعه بیشتر
آموزش Emit در Vue.js | انتقال رویداد از کامپوننت فرزند به والد
1404/09/28 21:41

آموزش Emit در Vue.js | انتقال رویداد از کامپوننت فرزند به والد

مطالعه بیشتر
آموزش تکنیک‌های پیشرفته CSS Grid: طراحی ساختارهای پیچیده و واکنش‌گرا
1402/06/18 23:16

آموزش تکنیک‌های پیشرفته CSS Grid: طراحی ساختارهای پیچیده و واکنش‌گرا

مطالعه بیشتر
درک Props و انتقال داده‌ها بین کامپوننت‌ها در Vue.js | آموزش کاربردی
1404/09/24 20:16

درک Props و انتقال داده‌ها بین کامپوننت‌ها در Vue.js | آموزش کاربردی

مطالعه بیشتر
آموزش ساخت ماشین حساب با جاوا اسکریپت: راهنمای کامل با مثال‌های کاربردی
1403/08/04 18:52

آموزش ساخت ماشین حساب با جاوا اسکریپت: راهنمای کامل با مثال‌های کاربردی

مطالعه بیشتر
کار با border و تنظیمات آن در CSS: مدیریت زوایای گرد با border-radius
1403/08/09 20:16

کار با border و تنظیمات آن در CSS: مدیریت زوایای گرد با border-radius

مطالعه بیشتر
آموزش استفاده از تگ‌های خاص HTML: تگ‌های کاربردی برای طراحی وب‌سایت
1402/05/22 23:53

آموزش استفاده از تگ‌های خاص HTML: تگ‌های کاربردی برای طراحی وب‌سایت

مطالعه بیشتر
معرفی MySQL و phpMyAdmin: راهنمای جامع مدیریت پایگاه داده برای توسعه‌دهندگان وب
1405/05/04 23:32

معرفی MySQL و phpMyAdmin: راهنمای جامع مدیریت پایگاه داده برای توسعه‌دهندگان وب

مطالعه بیشتر
آموزش رویدادهای پیشرفته در جاوا اسکریپت: بابلینگ، کپچرینگ و توقف پیش‌فرض - راهنمای جامع
1403/08/02 21:45

آموزش رویدادهای پیشرفته در جاوا اسکریپت: بابلینگ، کپچرینگ و توقف پیش‌فرض - راهنمای جامع

مطالعه بیشتر
آشنایی با Vue CLI و ایجاد پروژه‌های پیشرفته در Vue.js | راهنمای کامل
1404/09/29 21:09

آشنایی با Vue CLI و ایجاد پروژه‌های پیشرفته در Vue.js | راهنمای کامل

مطالعه بیشتر
آموزش استفاده از cubic-bezier در CSS برای انیمیشن‌های سفارشی و حرفه‌ای
1403/08/12 20:28

آموزش استفاده از cubic-bezier در CSS برای انیمیشن‌های سفارشی و حرفه‌ای

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

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

مطالعه بیشتر

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