آموزش کامل و اصولی اتصال 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ها استفاده میکند که خطایابی را بسیار راحتتر میسازد.
نکات امنیتی طلایی در اتصال پایگاه داده
- هرگز اطلاعات حساس دیتابیس را هاردکد نکنید: همیشه اطلاعات ورود به دیتابیس را در فایلهای پیکربندی خارج از پوشه عمومی وب (مانند فایل .env) نگهداری کنید.
- استفاده از UTF-8: برای پشتیبانی کامل از زبان فارسی و شکلکها، حتماً ساختار ارتباطی (Charset) را بر روی utf8mb4 تنظیم کنید.
- بستن اتصالات باز: اگرچه PHP پس از اتمام اجرای اسکریپت اتصالات را میبندد، اما بستن دستی اتصالات بزرگ به بهینهسازی مصرف حافظه سرور کمک شایانی میکند.
پرسش و پاسخ
نظری یافت نشد
برای ارسال نظر ابتدا وارد شوید