میخواهم خیلی خلاصه و کوتاه نحوه اتصال به دیتابیس mysql با استفاده از کلاس PDO رو خدمتتون بگم :

و نحوه واکشی اطلاعات و چاپ اون در صفحات php که همه برنامه نویسان php به اون نیاز دارن
db
ببینید دوستان همونطور که میدونید ما برای نگهداری داده ها و اطلاعات برنامه های تحت وبمون از یک دیتابیس استفاده میکنیم و چون مای اس کیوال سازگاری فوق العاده زیادی با زبان php داره و یکسری ویژگی های دیگه داره که سبب شده ما برای نگهداری داده های اپلیکیشن های تحت وب از این سیستم مدیریت بانک اطلاعاتی استفاده کنیم . خوب ممکنه بگید این ویژگی ها چی هست ؟!  اولین ویژگی سرعت بسیار بالای اجرای کوئری هاست، بعدی قابلیت پاسخ دهی و اجرای کوئری های چند کاربر بطور همزمان ، بعدی قابلیت نگهداری حجم زیادی از داده ها ، قابلیت سینک شدن با سایر سیستم های مدیریت بانک اطلاعات مثل SQL SERVER  که برای خود من اون ویژگی چند کاربره بودن و اجرای چند وظیفه بطور همزمانش خیلی جالبه و به نظر شخص بنده همین ویژگی این سیستم هستش که سبب شده اکثر سایت ها و برنامه های تحت وب ازش استفاده کنن، چون اصولا مبنای کار برنامه های تحت وب قابلیت اجرا توسط هزاران کاربر همزمان هست و این یک نیاز برای این نوع نرم افزار ها هست که تیم توسعه دهنده مای اس کیوال همین نیاز رو فهمیدن بلافاصله دست بکار شدن و این برنامه تحت وب رو ساختن
 
خوب فکر میکنم مقدمه دیتابیس برای این پست کافی است حالا بپردازیم به نحوه اتصال به این سیستم:
در زبان php چندین کلاس برای اتصال به بانک وجود داره که ما در این مطلب جدیدترین اون رو میگیم یعنی کلاس PDO
شاید بعضی هاتون مبتدی هستین یا به هر دلیلی با کلاس آشنا نیستین ، پس یه تعریف ساده ای اگه از کلاس PDO در برنامه نویسی پی اچ پی داشته باشیم این میشه : 
کلاس PDO مجموعه ای از دستورات و توابع داخلی php  هستن که برای اتصال به بانک توسط توسعه دهندگان زبان php در داخل کتابخونه خود php نوشته شدن و ما برای استفاده فقط کافیه که یک نمونه از این کلاس رو بسازیم پس ما با کارمون دیگه خیلی راحته ، چرا !؟ چون خود php به کمک ما اومده و تمام دستورات اتصال به بانک نوشته و ما کافیه اسم کلاس و متدهاش رو بدونیم و از این کلاس یک نمونه بسازیم و سپس برای اجرای کوئری هامون از متد query() استفاده کنیم:
روش اتصال به بانک اطلاعاتی با کلاس PDO بصورت زیر هست :
 
 
همونطور که گفتیم ابتدا از کلاس PDO یک نمونه میسازیم 
<?php
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8mb4', 'username', 'password');
?>
     
همونطور که میبینید ما یک نمونه از روی کلاس PDO ساختیم و درون متغیری از حافظه که اسمشو گذاشتیم db ریخیتم
الان متغیر $db یک شی از کلاس PDO هست
 
 
 
در بالا میبینید که کلاس PDO سه تا پارامتر میگیره که با رنگ های سبز نشون دادم
 
پارامتر اول کلاس PDO :  نوع دیتابیس و نام دیتابیس به همراه نوع کدگذاری (کافیه عبارت testdb رو به نام دیتابیس خودتون تغییر بدید)
 
پارامتر دوم کلاس PDO :  نام کاربری دیتابیس که اگه لوکال باشه معمولا root هست
 
پارامتر سوم کلاس PDO :  رمز عبور پایگاه داده که اگه لوکال باشه معمولا خالی میشه
 
 
 
نکته : شما می تونید از داخل برنامه PhpMyAdmin نام کاربری و رمز عبور سیستم مدیریت بانک mysql رو تغییر بدید
 
 
تا اینجا ما تونستیم به بانک متصل بشیم حالا وقتشه که دستورات SQL (کوئری) خودمون رو در قالب یک رشته به بانک بفرستیم که برای این کار PDO یک متد داره (همون تابع خودمون) که یه پارامتر میگیره و اونهم رشته SQL ما هستش   بصورت زیر :
 
$db->query('SELECT * FROM table');
 
 
که اگه با شی گرائی در php آشنا باشید حتما میدونید که چطور باید یک متد موجود در داخل دستورات یک کلاس رو فراخوانی کنید ( دقیقا مثل بالا) یعنی اول باید از کلاس مربوطه یک نمونه بسازید بعد نام متغیر نگهدارنده نمونه که بهش میگیم شی و در این مثال $db هست رو می نویسیم و بعدش <- رو تایپ میکنیم و سپس نام متد مورد نظر از اون کلاس که در کلاس PDO یک متدی وجود داره که نامش query() هست و همونطوری که گفتم از ما رشته اس کیو ال رو میخواد و ما هم مثلا توی رشته اس کیو ال گفتیم تمامی فیلدها و رکوردهای جدول table رو میخواهیم برامون بیاری ، حالا متد query() این رشته رو از ما میگیره و از طریق شی $db  میبره تحویل سیستم مدیریت بانک اطلاعاتی (mysql) میده ، بعد از اینکه بانک کوئری رو اجرا کرد اگه مقدار قابل برگشتی بود یعنی ما رکوردهایی رو خواسته بودیم به ما بر میگردونه همین
 
حالا چطور باید نتیجه رو در صفحه php دریافت کنیم ، خیلی آسونه ، میتونیم از توابع از پیش نوشته زیادی استفاده کنیم که من در اینجا میخوام تابع foreach() رو بگم که این تابع نتیجه دریافت شده از بانک رو میگیره و رکورد به رکورد به ما تحویل میده که میتونیم اونو توی صفحه نشون بدیم بصورت زیر :
 
<?php
 
$resualt = $db->query('SELECT * FROM table');

foreach($resualt as $row)

{
echo $row['field1']; 

echo "<br>";

}

?>
 
 
 
توضیح کد بالا :
ما نتیجه کوئری رو درون پارامترهای تابع foreach نوشتیم و یک کلمه کلیدی as قرار دادیم و سپس یک متغیر دلخواه نوشیتم که داده های هر ردیف رو درون اون بریزیم حالا درون بلوک دستورات foreach فیلدها رو چاپ کردیم
 
توضیحی درباره حلقه foreach() : 
این حلقه یک لیست رو از ما میگیره ( منظورم از لیست همون لیست های کاغذی خودمون رو تصور کنید که شامل ردیفها و ستونهایی هست)
بعد میاد از اولین ردیفش میخونه و یکی یکی میریزه توی همون متغییری که ما تعیین میکنیم که اینجا $row گذاشتیم
یعنی به ازای تعداد ردیف ها این حلقه تکرار میشه تا اینکه اشاره گر به آخرین ردیف برسه که ما میتونیم در هر بار که ردیف رو داخل متغیر ما ریخت مقادیر اون ردیف رو نشون بدیم
 
کلاس PDO