PDO (PHP Data Object) পর্ব ১: PDO Basics

PHP তে PDO কি?

PHP PDO with MySQL

PHP তে PDO হচ্ছে একটা Database Extension বা class যা দিয়ে MySQL, Oracle, MSSQL, PGSQL, DB2 এবং SQLITE সহ বিভিন্ন Database থেকে Data তুলে আনা, Data সম্পাদনা করা, ডিলিট করা এবং নতুন Data ঢুকানোর জন্য ব্যবহৃত হয়। PHP তে PDO ছাড়াও প্রত্যেকটি Database System এর জন্য আলাদা আলাদা Extension যেমন: MySQL Database এর জন্য mysqli, Oracle Database এর জন্য OCI8 ইত্যাদি আছে। PHP তে PDO কে Plug & Play টাইপের Database extension বলা যায়। কেননা PDO extension টি একাই একসাথে সবচেয়ে জনপ্রিয় Database গুলো support করে। আর এতে সুবিধা হল যেকোন সময় এক Database থেকে যদি অন্য কোন ডেটাবেসে সুইচ করতে হয় তাহলে শুধু অল্প কিছু কোড সম্পাদনা করলেই কাজ হয়ে যাবে। তাছাড়া PDO অন্যান্য Database Extension এর তুলনায় অনেক বেশি নিরাপদ এবং দ্রুত।

PHP তে PDO extension দিয়ে MySQL Database Server এর সাথে connect করার উপায় কি?

PDO দিয়ে MySQL Database Server এর সাথে connect করতে চাইলে, প্রথমে আপনাকে MySQL data source name or DSN : অর্থাৎ, MySQL Database Server এর address দিতে হবে । অর্থাৎ সার্ভারের IP অথবা server name দিতে হবে। যেমন : 127.0.0.1 অথবা localhost ব্যবহার করতে পারেন।

তারপর আপনাকে new কীওয়ার্ড দিয়ে PDO class এর একটা object তৈরী করতে হবে, এবং PDO class এর constructor Method এ আপনার DSN কে Argument হিসেবে পাঠাতে হবে।

চলুন প্রথমে আমরা Database সার্ভারের সাথে connect হই, Database সার্ভারের সাথে connect করার জন্য নিচের কোডটি লিখুন:

<?php
$dsn="mysql:host=localhost";
try {
    $dbh = new PDO($dsn);
    echo "Connection Success";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>

উপরের কোডটিতে যদি “connection success” না এসে , ঠিক নিচের মতো করে error দেখায় , তাহলে বুঝতে হবে আপনার MySQL Server টি বন্ধ বা অন্য যেকোনো সমস্যা আছে।

PHP PDO HOST Connection Error

Note: PHP PDO তে error handling, program flow control এর জন্য try….catch ব্যবহৃত হয়। এটার বিশেষ সুবিধা হচ্ছে error গুলোকে খুব সহজ এবং কার্যকর ভাবে হ্যান্ডলিং করা যায়। আর এতে Project যেমন secured হয় , এবং performance ও ভালো হয়। try…catch এর সাধারণ নিয়ম হচ্ছে আপনার code run হবে try block এর মধ্যে , যদি code এ কোনো সমস্যা হয়, তাহলে program স্বয়ংক্রিয় ভাবে catch block এ যাবে, PDOException Class এর বিভিন্ন Method দিয়ে customize error message দেখানো যাবে।

https://blog.w3programmers.com/php-course/

PHP তে PDO extension দিয়ে MySQL Database Server এ Database তৈরী করার উপায় কি?

Database Server এর সাথে তো connect করলেন? কিন্তু Database তৈরী করবেন না? আর হ্যাঁ Database তৈরী করতে চাইলে Database তৈরী করার পারমিশন আছে এমন যেকোনো একটা user হিসেবে access থাকতে হবে। আর Database তৈরী করার পারমিশন আছে এমন যেকোনো একটা user হিসেবে access করতে হলে আপনাকে new PDO Object এ আরো দুটি parameter হিসেবে সেই user এর নাম এবং পাসওয়ার্ড দিতে হবে। নিচের উদাহরণটি দেখুন :

<?php
$dsn="mysql:host=localhost";
$user="root";
$pass="";
try {
    $dbh = new PDO($dsn,$user,$pass);
    echo "Connection Success";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>

উপরের কোডটিতে যদি “connection success” না এসে , ঠিক নিচের মতো করে error দেখায় , তাহলে বুঝতে হবে আপনার MySQL Server এর username অথবা password এ ভুল আছে।

PHP PDO Username and Password Error
https://blog.w3programmers.com/php-course/

Database Server এর সাথে connect হলো, user হিসেবে access হলো , এবার চলুন DSN, Username, Password ব্যবহার করে PHP PDO দিয়ে একটা Database তৈরী করা যাক। আর PHP দিয়ে MySQL Database Server এ Database তৈরী সহ যেকোনো কাজ করতে চাইলে আপনাকে PDO class এর query Method এর মধ্যে SQL (Standard Query Language) লিখে একে call করতে হবে। এখানে আমরা testDB নামে একটা Database তৈরী করার জন্য “CREATE DATABASE IF NOT EXISTS testDB” query টি ব্যবহার করব। নিচের উদাহরণটি দেখুন :

<?php
$dsn="mysql:host=localhost";
$user="root";
$pass="";
try {
    $dbh = new PDO($dsn,$user,$pass);
    $dbh->query('CREATE DATABASE IF NOT EXISTS testDB') or die("Database Create Fail!");
    echo "Database Create Success";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>

Result

Database Create Success

PHP PDO Create Database

PHP তে PDO extension দিয়ে MySQL Database এ table তৈরী করার উপায় কি?

Database Server এর সাথে connect হলো, user হিসেবে access হলো , Database ও তৈরী হলো, এখন PHP PDO দিয়ে যেকোনো MySQL Database এ table তৈরী করতে চাইলে, প্রথমে আপনাকে Database কে connect করতে হবে । আর database connect করার নিয়ম হচ্ছে $dsn string এ hostname বা IP এর পর semicolon (;) দিয়ে Database এর নাম দিতে হবে। নিচের উদাহরণটি দেখুন :

<?php
$dsn="mysql:host=localhost;dbname=testDB";
$user="root";
$pass="";
try {
    $dbh = new PDO($dsn,$user,$pass);
    echo "Database Connection Success";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>

https://blog.w3programmers.com/php-course/

Database এর সাথে যদি succefully connect হয় , তাহলে এবার আপনার কাজ হচ্ছে একটা table তৈরী করা । আর PHP দিয়ে MySQL Database এ table তৈরী করতে চাইলে Database তৈরির মতোই আপনাকে PDO class এর query Method এর মধ্যে Table তৈরির SQL (Standard Query Language) লিখে একে call করতে হবে। নিচের উদাহরণটি দেখুন :

<?php
$dsn="mysql:host=localhost;dbname=testDB";
$user="root";
$pass="";
$sql=<<<"table"
CREATE TABLE `students` ( 
	`id` INT NOT NULL AUTO_INCREMENT , 
	`name` VARCHAR(20) NOT NULL , 
	`email` VARCHAR(100) NOT NULL , 
	`mobile` VARCHAR(20) NOT NULL , 
	PRIMARY KEY (`id`(4))) 
ENGINE = InnoDB;
table;
try {
    $dbh = new PDO($dsn,$user,$pass);
    $dbh->query($sql) or die("Table Create fail");
    echo "Table Create Success";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>

Result:

Table Create Success

আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ১৫ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller, Amarbebsha Ltd সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ডেটা সাইন্স, মেশিন লার্নিং, বিগ ডেটা, ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। এছাড়াও বাংলাদেশের ১৮৫ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ১২০ এরও অধিক ছাত্র আমার হাতে জেন্ড সার্টিফাইড ইঞ্জিনিয়ার হয়েছেন। বর্তমানে w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -8.2 Engineering, Laravel Mastering Course with ReactJS, Python Beginning To Advance with Blockchain, Machine Learning and Data Science, Professional WordPress Plugin Development Beginning to Advance কোর্স করাই। আর অবসর সময়ে w3programmers.com এ ওয়েব টেকনোলজি নিয়ে লেখালেখি করি।

4 thoughts on “PDO (PHP Data Object) পর্ব ১: PDO Basics

Leave a Reply