এখানেই আগের পাঠের "এটি একটি ডেটাবেসের সাথে কথা বলতে পারে" — PHP কেন গুরুত্বপূর্ণ তার সেই কথাটা আসলে বাস্তব হয়ে ওঠে। এখনও SQL পরিচিতি পাঠটি না দেখে থাকলে, এখনই সেটা দেখার সঠিক সময়; এখান থেকে, এই অংশটি ধরে নেয় আপনি জানেন একটি টেবিল, সারি, আর একটি সাধারণ SELECT স্টেটমেন্ট কী।
একটি ডেটাবেসের সাথে কথা বলার জন্য PHP-এর একের অধিক উপায় আছে, কিন্তু PDO হলো আধুনিক, প্রস্তাবিত উপায় — এটি একটি সামঞ্জস্যপূর্ণ ইন্টারফেসের মাধ্যমে বিভিন্ন ডেটাবেস সিস্টেমের সাথে কাজ করে, আর এটি নিরাপদ কোয়েরি লেখা সহজ করে দেয়, যা আসল user input জড়িত হলে অনেক গুরুত্বপূর্ণ হয়ে ওঠে।
<?php
$host = "localhost";
$db = "school";
$user = "root";
$pass = "";
try {
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully.";
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>কানেকশনকে (Error Handling পাঠের) try/catch-এ মোড়ানো এখানে নির্দিষ্টভাবে গুরুত্বপূর্ণ — একটি ডেটাবেস আপনার কোডের সাথে সম্পর্কহীন কারণে সাময়িকভাবে অপ্রাপ্য হতে পারে, আর একজন visitor-এর একটি পরিষ্কার মেসেজ দেখা উচিত, কোনো raw কানেকশন এরর নয়।
একটি ডেটাবেস পাসওয়ার্ড সরাসরি এমন একটি ফাইলে হার্ডকোড করা যা আপনি হয়তো version control-এ কমিট করতে পারেন বা দুর্ঘটনাক্রমে প্রকাশ করে ফেলতে পারেন, একটি বাস্তব, সাধারণ ভুল। একটি নিরাপদ প্যাটার্ন হলো আপনার প্রজেক্টের পাবলিক web root-এর বাইরে একটি আলাদা কনফিগ ফাইল, (Includes পাঠের) require_once দিয়ে টেনে আনা:
// config.php — kept outside the web-accessible folder
<?php
return [
"host" => "localhost",
"db" => "school",
"user" => "root",
"pass" => "",
];
?>লোকাল শেখা বনাম বাস্তব ডিপ্লয়মেন্ট
এই উদাহরণগুলো শেখার জন্য একটি লোকাল MySQL ইনস্টলে কানেক্ট করে। একটি বাস্তব ডিপ্লয়মেন্ট প্রায় সবসময় credentials একদমই কোনো ফাইলে না রেখে এনভায়রনমেন্ট ভ্যারিয়েবলে রাখে — এটি হোস্টিং-নির্দিষ্ট একটি বিষয়, PHP বা SQL নিজে নয়।