با سلام، در قسمت قبل در مورد مزایای PDO صحبت کردیم و به شما پیشنهاد استفاده از WAMP را (برای ویندوز) دادیم. در این قسمت کد نویسی را شروع کرده و برای هر مورد مثالی ذکر می کنیم.
در جلسه ی قبل گفتیم که PDO می تواند به پایگاه های داده ی زیادی متصل شود. لیستی از این پایگاه های داده را در تصویر زیر می بینید:
PDO از یک متد اتصال به نام DSN استفاده می کند. با اینکه این متد فاکتور پیچیده ای ندارد اما ممکن است برای تازه کار ها سر در گمی ایجاد کند، بنابراین من یک مثال کامل از این مسئله را با تمام توضیحات آن برای شما می آورم.
ابتدا باید بدانید DSN یک رشته است که جفت های parameter=value آن با (;) از هم جدا می شوند. همیشه باید از فرمت خاص خود این رشته پیروی کنید، بنابراین استفاده از فاصله ها (space) و quotation ها و ... الزامی ندارد.
تنها چیزی که باید آن را رعایت کنید استفاده از جدا کننده ی (;) بین جفت ها است. می توانید این مورد را در سایت PHP مشاهده کنید.
بنابراین برای اتصال به پایگاه داده، PDO از شما می خواهد سه نوع داده ی مختلف را به آن بدهید:
database driver
و host
و db (schema) name
و charset
باید داخل خود رشته ی DSN قرار بگیرند. موارد دلخواه دیگری مانند port
و unix_socket
نیز در این قسمت قرار خواهند گرفت.username
و password
تحویل constructor داده می شوند.این موارد را به صورت کامل توضیح خواهم داد اما ابتدا باید با ساختار PDO به صورت کامل آشنا شویم.
ساختار کامل PDO به شرح زیر است:
PDO { __construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] ) bool beginTransaction ( void ) bool commit ( void ) mixed errorCode ( void ) array errorInfo ( void ) int exec ( string $statement ) mixed getAttribute ( int $attribute ) static array getAvailableDrivers ( void ) bool inTransaction ( void ) string lastInsertId ([ string $name = NULL ] ) PDOStatement prepare ( string $statement [, array $driver_options = array() ] ) PDOStatement query ( string $statement ) string quote ( string $string [, int $parameter_type = PDO::PARAM_STR ] ) bool rollBack ( void ) bool setAttribute ( int $attribute , mixed $value ) }mp($var_name); }
حتما با خودتان می گویید کجای این آسان تر از mysqli است! اما صبر کنید! این ساختار کامل PDO است؛ به عبارت دیگر این ساختار شامل تمام گزینه های دلخواه و هر ورودی ممکن است.
ما در برنامه نویسی از اکثر این موارد استفاده نمی کنیم و ساختار کلی را جهت آشنایی شما با آن آورده ام تا اگر موردی نظرتان را جلب کرد آن را جست و جو کنید. در این ساختار تنها خط اول موضوع بحث امروز ماست.
به عقیده ی من بهترین راه یادگیری برنامه نویسی و اکثر مسائل در حرفه های مختلف با مثال است و هیچ چیز جای تجربه را نمی گیرد. بنابراین پر مصرف ترین موارد را بر اساس یک مثال کامل توضیح می دهم. ابتدا یک مثال ساده از اتصال به MySQL:
<?php $dbhost = 'localhost'; $dbname='hr'; $dbuser = 'root'; $dbpass = ''; $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); ?>
نکات در رابطه با این مثال:
database driver
در واقع همان عبارت mysql است که تعیین می کند PDO قرار است به چه پایگاه داده ای متصل شود. مثال:<?php $dbuser = 'postgres'; $dbpass = 'abc123'; $host = 'localhost'; $dbname='postgres'; $dbh = new PDO("pgsql:host=$host;dbname=$dbname", $dbuser, $dbpass); ?>
در خط آخر دستور =pgsql:host
به جای =mysql:host
را به وضوح مشاهده می کنید. این یک مثال ساده برای درک ابتدایی اتصال با PDO بود اما حالا یک مثال کامل با چند آپشن معروف را برای شما می نویسم و بر اساس آن توضیحاتی ارائه می کنم:
$host = '127.0.0.1'; $db = 'test'; $user = 'root'; $pass = ''; $charset = 'utf8mb4'; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; try { $pdo = new PDO($dsn, $user, $pass, $options); } catch (\PDOException $e) { throw new \PDOException($e->getMessage(), (int)$e->getCode()); }
متغیر های ذکر شده در مثال بالا از این قرار اند:
127.0.0.1
یا localhost
است. اگر از یک سرور واقعی استفاده می کنید و روی آن برنامه نویسی می کنید باید آدرس دقیق هاست را در این قسمت وارد کنید. این آدرس در هنگام اجاره ی سرور به شما داده می شود، در غیر این صورت با مدیریت هاستینگ خود تماس بگیرید.()mysql_select_db
می دادیم. اگر به صورت محلی کد نویسی می کنید (مثل استفاده از WAMP) این مقدار توسط خودتان تعیین می شود اما اگر روی سرور واقعی کار می کنید باید از مدیریت هاستینگ بخواهید این آدرس را به شما بدهند. البته در ایران اکثر این موارد به دست خود شما تنظیم می شود؛ زمانی که وارد سرور خود بشوید می توانید از قسمت phpMyAdmin یک پایگاه داده به دلخواه خود بسازید.utf8mb4
باشد (مانند مثال بالا).چرا از utf-8 استفاده نکنیم؟
پشتیبانی از utf-8 در PHP به صورت ناقص است و ممکن است با مشکلاتی مواجه شوید. بنابراین حتما به جای utf-8 از utf8mb4 استفاده کنید.
تا اینجای کار شما با قسمت های مهم و اولیه ی DSN آشنا شدید و من نیز به دلیل طولانی نشدن و خسته کننده نبودن آموزش آن را همین جا تمام می کنم. در قسمت بعد آپشن های بیشتر و نکات بیشتری از مثال بالا را توضیح خواهیم داد.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.