آغاز به کار با PDO و آشنایی با تابع fetch و fetchAll

از طریق ثابت PDO و تابع زیر به اطلاعاتی کلی در مورد دیتابیس می‌رسیم:

var_dump(PDO::getAvailableDrivers());

در کد زیر جهت یک اتصال به روش PDO می‌بینیم که ابتدا درایور مورد نظر را معرفی کرده و سپس جزئیات آن از قبیل host و… را مشخص می‌کنیم:

$handler = new PDO('mysql:host=localhost;dbname=blog','root','');

حال اگر خطایی در اتصال وجود داشته باشد، از طریق روش زیر آن را مدیریت می‌کنیم. در مثال زیر نام دیتابیس اشتباه وارد شده است:

try{
	$handler = new PDO('mysql:host=localhost;dbname=blogQ','root','');
	$handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
	echo $e->getMessage();
	die();
}

حال مانند زیر به سادگی اطلاعات را از جدول مورد نظرمان می‌خوانیم:

$query = $handler->query("SELECT * FROM firsttable");
while($row = $query->fetch()){
	echo $row['name'],' ',$row['family'],'<br>';
}

نکته: تابع fetch به صورت پیش‌فرض قادر است آرایه‌ها را هم‌زمان به صورت Associative و Numeric برگرداند. پس ما هم به کلیدها به صورت عددی و هم به صورت اسمی دسترسی خواهیم داشت. به عبارت دیگر پیش‌فرض تابع fetch به صورت زیر است و مقدار پاس داده شده با مقدار خالی برابری می‌کند:

fetch();
fetch(PDO::FETCH_BOTH);

اگر هم فقط به مقدار عددی بخواهیم دسترسی داشته باشیم، به صورت زیر است:

fetch(PDO::FETCH_NUM);

برای دسترسی به حالت Associative یا به عبارتی حالتی که کلیدها بر اساس نام باشند، از حالت زیر استفاده می‌کنیم:

fetch(PDO::FETCH_ASSOC);

حالت دیگر دسترسی به صورت Object است:

fetch(PDO::FETCH_OBJ);

در حالت Object دسترسی به مقادیر متفاوت است. به همین دلیل مثال خواندن اطلاعات را به صورت زیر بازنویسی کرده‌ام:

$query = $handler->query("SELECT * FROM firsttable");
while($row = $query->fetch(PDO::FETCH_OBJ)){
	echo $row->name,' ',$row->family,'<br>';
}

نکته: همچنین علاوه بر fetch می‌توانیم از fetchAll استفاده کنیم. برخلاف fetch، از fetchAll می‌توانیم بدون حلقه نیز استفاده کنیم و تمام اطلاعات داخل جدول را برای ما واکشی می‌کند:

$query = $handler->query("SELECT * FROM firsttable");

$row = $query->fetchALL(PDO::FETCH_ASSOC);
echo '<pre>',print_r($row),'</pre>';

درباره نویسنده: احسان

مطالب زیر را حتما بخوانید