خلاصه: در این مقاله ما میخواهیم که قدم به قدم درباره اتصال دیتابس MySQL با استفاده از PDO در PHP آشنا بشویم.
قبل از اتصال به پایگاه داده MySQL شما باید موارد زیر را داشته باشید.
مرحله 1 - تنظیم پارامترهای پایگاه داده MySQL
فرض کنید که یک پایگاه داده MySQL به شکل local دارید که اطلاعات زیر را دارد:
خلاصه: در این آموزش، گام به گام یاد خواهید گرفت که چگونه با استفاده از PDO از PHP به پایگاه داده MySQL متصل شوید.
قبل از اتصال به سرور پایگاه داده MySQL، موارد زیر را باید داشته باشید:
فرض کنید یک سرور پایگاه داده MySQL محلی دارید که اطلاعات زیر را دارد
یک فایل کانفیگ به اسم config.php ایجاد کنید و مقادیر دیتابیس را در آن قرار دهید.
<?php $host = 'localhost'; $db = 'bookdb'; $user = 'root'; $password = 'S@cr@t1!';
برای دسترسی به مقادیر دیتابیس در فایل config.php از دستور `require` استفاده می کنیم.
<?php require 'config.php';
مرحله 2 - فعال کردن درایور PDO_MySQL
PDO_MYSQL یک درایور است که رابط PDO را پیاده سازی می کند. PDO از درایور PDO_MYSQL برای اتصال به پایگاه داده MySQL استفاده می کند.
برای بررسی اینکه درایور PDO_MYSQL فعال شده است، فایل php.ini را باز کنید. فایل php.ini معمولاً در دایرکتوری php قرار دارد. به عنوان مثال، اگر از XAMPP در ویندوز استفاده می کنید، می توانید فایل php.ini را در زیر دایرکتوری C:\xampp\php پیدا کنید.
خط extension در فایل php.ini به شکل زیر نشان داده شده است:
;extension=php_pdo_mysql.dll
برای فعال کردن این درایور، باید با حذف نشانه سمیکولون (;) از ابتدای خط، آن را غیرفعال کنید:
extension=php_pdo_mysql.dll
سپس برای اعمال تغییرات، باید وب سرور را دوباره راهاندازی کنید.
از نام منبع داده (DSN) استفاده می کند که شامل اطلاعات زیر است:
PDO از این اطلاعات برای برقراری ارتباط با سرور پایگاه داده استفاده می کند. برای اتصال به سرور پایگاه داده MySQL، از فرمت نام منبع داده زیر استفاده می کنید:
"mysql:host=host_name;dbname=db_name;charset=UTF8"
برای مثال:
$dsn = "mysql:host=localhost;dbname=bookdb;charset=UTF8"
Note that the charset UTF-8 sets the character set of the database connection to UTF-8.
اسکریپت فایل index.php زیر نحوه اتصال به پایگاه داده bookdb را در سرور پایگاه داده MySQL با حساب root نشان می دهد:
<?php require 'config.php'; $dsn = "mysql:host=$host;dbname=$db;charset=UTF8" try { $pdo = new PDO($dsn, $user, $password); if ($pdo) { echo "Connected to the $db database successfully!" } } catch (PDOException $e) { echo $e->getMessage(); }
چطوری کار میکند؟
اگر همه چیز را به درستی تنظیم کرده باشید، پیام زیر را خواهید دید:
Connected to the bookdb database successfully!
PDO سه استراتژی مختلف برای کنترل خطا پشتیبانی می کند:
PDO::ERROR_SILENT - PDO یک کد خطا برای بازرسی با استفاده از روش های PDO::errorCode() و PDO::errorInfo() تنظیم می کند.
PDO::ERROR_SILENT حالت پیش فرض است.
PDO::ERRMODE_WARNING - علاوه بر تنظیم کد خطا، PDO یک پیام E_WARNING صادر می کند.
PDO::ERRMODE_EXCEPTION - علاوه بر تنظیم کد خطا، PDO یک PDOException را ارسال می کند.
برای تنظیم Error handling strategies، می توانید یک آرایه برای ثبت Attribute به سازنده PDO استفاده کنید، مانند:
$pdo = new PDO($dsn, $user, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
یا میتوانید از روش setAttribute() در PDO استفاده کنید، مانند:
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
اکثر خطاهایی را که هنگام اتصال به پایگاه داده MySQL با آن مواجه می شوید:
1. اگر شما درایور MySQL را در فایل php.ini فعال نکرده باشید خطای زیر را دریافت خواهید کرد.
could not find driver
2. اگر رمز عبور را اشتباه وارد کنید خطای زیر را دریافت خواهید کرد.
SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
3. اگر نام پایگاه داده را اشتباه وارد کنید و پایگاه داده وجود نداشته باشد، خطای زیر را دریافت خواهید کرد.
SQLSTATE[HY000] [1049] Unknown database 'bookdb'
4. اگر اطلاعات مربوط به hostname را اشتباه وارد کنید خطای زیر را دریافت خواهید کرد.
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known.
شما هم اکنون به پایگاه داده متصل شده اید. خیلی ممنون از شما که این مقاله را مطالعه کردید، اگر در خصوص در این مقاله هرگونه مشکل/سوالی داشتید حتما در قسمت نظرات سایت با ما در میان بگذراید.
منبع: وبسایت میموک