مروری بر PDO (بخش اول)

Overview of PDO - Part I: Preparation

25 بهمن 1399
پروژه ساخت شبکه ی اجتماعی: مروری بر PDO (بخش اول)

در این جلسه و جلسه بعدی می خواهیم یادآوری هایی از PDO (رابط اتصال به پایگاه داده به صورت شیء گرا در PHP) داشته باشیم چرا که در قسمت های بعدی سری آموزشی باید فریم ورک خود را به پایگاه داده متصل کنیم.

PDO یک لایه دسترسی به داده دارد، بنابراین می تواند با اکثر پایگاه های داده به غیر از MySQL نیز کار کند و همچنین برای کار با تمام این لایه ها از دستورات و توابع یکسان استفاده می کند. حتما می دانید که کاملا شیء گراست و از نسخه 5.1 PHP وجود دارد. بنابراین نمی توانید در PHP 4 از آن استفاده کنید.

از اینجا به بعد نیازی نیست که مراحل را دنبال کنید، چرا که فعلا با پروژه شبکه اجتماعی و فریم ورک کاری نداریم بلکه می خواهیم بعضی از دستورات PDO را چک کنیم. من وارد پوشه htdocs از مسیر اصلی XAMPP شده و پوشه ای جدید در آنجا به نام pdotest ایجاد می کنم. حالا درون این پوشه یک فایل به نام index.php می سازم تا کدهایمان را درون آن تست کنم.

حالا باید یک پایگاه داده بسازیم تا بتوانیم با آن کار کنیم بنابراین وارد phpMyAdmin شده و از قسمت create database یک پایگاه داده به نام pdotest بسازیم. درون این پایگاه داده یک جدول به نام users می سازیم. سپس فیلدهای آن را به صورت زیر قرار دهید:

  • Id – باید primary key و auto increment (گزینه A_I) باشد. نوع: INT
  • Name – از نوع VARCHAR با طول 255
  • Email - از نوع VARCHAR با طول 255
  • Status - از نوع VARCHAR با طول 255

حالا وقت شروع کار است!

به فایل index.php که تازه ساختیم مراجعه کنید. برای شروع کار با PDO باید یک DSN بسازیم. به زبان ساده DSN یک رشته است که برخی از اطلاعات پایگاه داده (کدام پایگاه داده، چه رمز و چه حساب کاربری، با چه حالتی و...) را در خود دارد و با استفاده از آن به پایگاه داده متصل می شویم. برای تمیز بودن کار و راحت تر شدن مدیریت کدها تمامی این اطلاعات را در متغیرها قرار می دهیم.

متغیرهایی که ما تعریف کرده ایم به این شکل هستند:

<?php
	$host = 'localhost';
	$user = 'root';
	$password = '123456';
	$dbname = 'pdotest';

متغیر host می گوید هاست شما کجاست؟ ما یک سرور مجازی در سیستم خود داریم بنابراین به آن localhost را داده ایم اما در حالت واقعی url سایت شما در این قسمت قرار می گیرد. متغیر user می گوید نام کاربری شما در پایگاه داده چیست؟ دقت کنید که user را با ستون users در جدولی که تازه ساختیم اشتباه نگیرید! هر پایگاه داده ای دارای حساب کاربری و رمز عبور خاصی است که خودتان آن را تعیین می کنید اما به صورت پیش فرض حساب کاربری root وجود دارد. این حساب کاربری اصلا امن نیست و نباید از آن استفاده کنید اما ما فقط قصد مثال زدن داریم بنابراین مشکلی نیست. Password نیز رمز عبور ما است که برای حساب کاربری من 123456 است. در اکثر مواقع حساب کابری root بدون رمز است که بسیار خطرناک است و شما باید حتما یک رمز خوب و طولانی برایش انتخاب کنید. من فعلا برای راحتی کار از 123456 استفاده کرده ام. متغیر dbname نیز نام پایگاه داده ما را مشخص می کند که pdotest بود.

حالا باید DSN را تعیین کنیم. اولین پارامتر این رشته باید نوع پایگاه داده شما باشد که همان MySQL است. سپس با علامت دو نقطه آن را جدا می کنیم و هاست را به رشته اضافه می کنیم الی آخر. به رشته DSN ما توجه کنید:

// Set DSN
	$dsn = 'mysql:host=' . $host . ';dbname=' . $dbname;

قالب این رشته باید دقیقا به همین شکل باشد و تمامی علامت ها به همین شکل قرار داشته باشند. شما می توانید از متغیر ها استفاده نکنید و اطلاعات را مستقیما وارد رشته کنید اما باید از قالب بالا پیروی کنید (به طور مثال برای تعیین نام هاست از دو نقطه و علامت تساوی استفاده کنید و ...).

پس از نوشتن DSN باید اتصال به پایگاه داده را بسازیم:

	$pdo = new PDO($dsn, $user, $password);

حالا اگر به آدرس localhost/pdotest برویم باید یک صفحه خالی برایمان ظاهر شود، چرا که هنوز چیزی ننوشته ایم اما اگر با خطا مواجه شدید یعنی یکی از پارامترها را درست ننوشته اید یا از قالب صحیح پیروی نکرده اید و ...

حالا که به پایگاه داده متصل شده ایم باید دستوراتی را به پایگاه داده بدهیم و با آن کار کنیم. همانطور که می دانید برای دستور دادن به پایگاه داده باید از زبان SQL استفاده کرد. اگر با این زبان آشنایی ندارید می توانید به دوره زبان SQL در روکسو مراجعه کنید.

یکی از راه های ارسال دستورات SQL به پایگاه داده استفاده از pdo_query است که اصلا امن نیست و شما نباید از آن استفاده کنید. PDO دستورات بسیار بهتری مانند prepared statement ها دارد که شما را از SQL Injection ها حفظ می کند. من دوست دارم ابتدا یک دستور SELECT را به پایگاه داده بفرستم که برای دریافت داده از پایگاه داده استفاده می شود اما هنوز هیچ چیزی در جدول خود نداریم که آن را دریافت کنیم بنابراین سریعا به phpMyAdmin میروم و چند کاربر می سازم.

در phpMyAdmin به صفحه جدول خود رفته و از بالای صفحه سربرگ Insert را انتخاب کنید. سپس از صفحه باز شده شروع به اضافه کردن چند کاربر کنید. از آن جا که این فرآیند وقت گیر است شما می توانید فایل پایگاه داده این جلسه را از این لینک دانلود کنید. اگر دوست دارید پایگاه داده خودتان را با پایگاه داده ما چک کنید می توانید این کار را با همین فایل Sql انجام دهید.

اگر دوست دارید به صورت عمیق تر با PDO آشنا شوید به دوره آموزشی PDO در روکسو سری بزنید.

تا اینجای کار قسمت آماده سازی را انجام داده ایم، در قسمت بعدی شروع به کدنویسی خواهیم کرد.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش ساخت شبکه اجتماعی توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.