PHP দিয়ে MySQL ডাটাবেস থেকে ডাটা পড়তে SELECT কোয়েরি ব্যবহার করা হয়। এখানে আমরা দেখব কিভাবে PHP ও MySQL ব্যবহার করে SELECT কোয়েরি দিয়ে ডাটাবেস থেকে ডাটা রিট্রিভ করা যায়।
1. mysqli ব্যবহার করে Data Read করা
mysqli দিয়ে MySQL থেকে ডাটা পড়তে দুইটি পদ্ধতি ব্যবহার করা হয়: প্রসিডিউরাল এবং অবজেক্ট-ওরিয়েন্টেড। নিচে দুটি পদ্ধতির উদাহরণ দেয়া হলো।
1.1 mysqli (প্রসিডিউরাল স্টাইল)
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// ডাটাবেস সংযোগ
$conn = mysqli_connect($servername, $username, $password, $dbname);
// সংযোগ চেক করা
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// SELECT কোয়েরি
$sql = "SELECT id, name, email FROM users";
$result = mysqli_query($conn, $sql);
// ডাটা রিট্রিভ করা
if (mysqli_num_rows($result) > 0) {
// প্রতিটি রেকর্ড ফেচ করা
while($row = mysqli_fetch_assoc($result)) {
echo "ID: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
}
} else {
echo "0 results";
}
// সংযোগ বন্ধ করা
mysqli_close($conn);
?>
1.2 mysqli (অবজেক্ট-ওরিয়েন্টেড স্টাইল)
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// ডাটাবেস সংযোগ
$conn = new mysqli($servername, $username, $password, $dbname);
// সংযোগ চেক করা
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// SELECT কোয়েরি
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);
// ডাটা রিট্রিভ করা
if ($result->num_rows > 0) {
// প্রতিটি রেকর্ড ফেচ করা
while($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
}
} else {
echo "0 results";
}
// সংযোগ বন্ধ করা
$conn->close();
?>
2. PDO ব্যবহার করে Data Read করা
PDO (PHP Data Objects) ব্যবহার করে SELECT কোয়েরি চালানোও সহজ। PDO তে ডাটা ফেচ করার জন্য prepare() এবং execute() মেথড ব্যবহার করা হয়।
2.1 PDO ব্যবহার করে Data Read করা
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
try {
// PDO দিয়ে ডাটাবেস সংযোগ
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// PDO তে এরর হ্যান্ডলিং সেট করা
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// SELECT কোয়েরি
$sql = "SELECT id, name, email FROM users";
$stmt = $conn->prepare($sql);
$stmt->execute();
// ডাটা রিট্রিভ করা
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($result) {
foreach ($result as $row) {
echo "ID: " . $row["id"] . " - Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
}
} else {
echo "No results found";
}
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
// সংযোগ বন্ধ করা
$conn = null;
?>
3. Data Read করার বিভিন্ন পদ্ধতি
MySQL থেকে ডাটা রিট্রিভ করার বিভিন্ন পদ্ধতি রয়েছে যা বিভিন্ন প্রয়োজনে ব্যবহার করা হয়:
3.1 fetch_assoc():
এটি একটি অ্যাসোসিয়েটিভ অ্যারে রিটার্ন করে যেখানে কলাম নামের মাধ্যমে ডাটা অ্যাক্সেস করা যায়।
$row = mysqli_fetch_assoc($result);
echo $row['name'];
3.2 fetch_row():
এটি ইনডেক্স অ্যারে রিটার্ন করে, অর্থাৎ কলামের ডাটা শুধুমাত্র ইনডেক্সের মাধ্যমে অ্যাক্সেস করা যায়।
$row = mysqli_fetch_row($result);
echo $row[0]; // প্রথম কলামের ডাটা
3.3 fetch_object():
এটি একটি অবজেক্ট রিটার্ন করে, যেখানে কলাম নাম প্রপার্টি হিসেবে অ্যাক্সেস করা যায়।
$row = mysqli_fetch_object($result);
echo $row->name;
3.4 fetchAll() (PDO):
PDO তে fetchAll() মেথড ব্যবহার করে একাধিক রেকর্ড একসাথে ফেচ করা যায়।
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $row) {
echo $row['name'];
}
4. ব্লক কোডে Data Read করার কিছু গুরুত্বপূর্ণ বিষয়
- SQL ইনজেকশন প্রতিরোধ: SELECT কোয়েরি চালানোর সময় প্রিপেয়ারড স্টেটমেন্ট ব্যবহার করা উচিত যাতে SQL ইনজেকশন থেকে রক্ষা পাওয়া যায়।
- Error Handling: PDO তে
try-catchব্লক ব্যবহার করে এরর হ্যান্ডলিং করা যায়। mysqli তেmysqli_error()বাmysqli_errno()ব্যবহার করা হয়। - কোয়েরি অপটিমাইজেশন: SELECT কোয়েরি তৈরির সময় ডাটাবেসের টেবিল গুলির ইন্ডেক্স ব্যবহার করুন যাতে পারফরম্যান্স বাড়ানো যায়। বড় টেবিল থেকে ডাটা রিট্রিভ করার সময় LIMIT ব্যবহার করুন।
সারাংশ
PHP দিয়ে MySQL ডাটাবেস থেকে ডাটা রিড করার জন্য mysqli এবং PDO দুটি জনপ্রিয় পদ্ধতি। আপনি যেই পদ্ধতি ব্যবহার করুন না কেন, SELECT কোয়েরি দিয়ে ডাটাবেস থেকে তথ্য বের করার প্রক্রিয়া একই রকম। mysqli প্রসিডিউরাল বা অবজেক্ট-ওরিয়েন্টেড স্টাইল সাপোর্ট করে, যেখানে PDO একাধিক ডাটাবেস সাপোর্ট করে এবং কোডে বেশি পোর্টেবিলিটি প্রদান করে। SELECT কোয়েরি চালানোর সময় ডাটা সঠিকভাবে ফেচ করতে হলে, প্রিপেয়ারড স্টেটমেন্ট ব্যবহার করে নিরাপদ এবং কার্যকরী কোড লেখা উচিত।
Read more