MySQLi (MySQL Improved) একটি পিএইচপি এক্সটেনশন যা MySQL ডেটাবেসের সাথে সংযোগ স্থাপন এবং বিভিন্ন ডেটাবেস অপারেশন (যেমন, SELECT, INSERT, UPDATE, DELETE) সম্পাদন করার জন্য ব্যবহৃত হয়। এটি MySQL ডেটাবেসের জন্য একটি উন্নত এবং কার্যকরী ইন্টারফেস প্রদান করে, যা MySQL এর পূর্ববর্তী সংস্করণের তুলনায় আরও অনেক সুবিধা এবং বৈশিষ্ট্য প্রদান করে।
MySQLi এর বৈশিষ্ট্য
- উন্নত নিরাপত্তা (Improved Security):
- MySQLi prepared statements সমর্থন করে, যা SQL ইনজেকশন (SQL Injection) আক্রমণ থেকে নিরাপত্তা নিশ্চিত করতে সাহায্য করে। এতে ডেটা এবং SQL কোড আলাদা হয়, ফলে আক্রমণকারীদের পক্ষে কোড চালানো কঠিন হয়ে পড়ে।
- অবজেক্ট-ওরিয়েন্টেড এবং প্রসিডিওরাল দুইভাবে কাজ করার সুবিধা:
- MySQLi তে অবজেক্ট-ওরিয়েন্টেড (Object-Oriented) এবং প্রসিডিওরাল (Procedural) উভয় স্টাইলেই কোড লেখা যায়। এর ফলে ডেভেলপাররা তাদের পছন্দমতো পদ্ধতিতে কাজ করতে পারেন।
- একাধিক স্টেটমেন্ট একসাথে এক্সিকিউট করা:
- MySQLi একাধিক স্টেটমেন্ট একসাথে এক্সিকিউট করার সুবিধা দেয়, যার ফলে ডেটাবেস অপারেশন দ্রুত হয়।
- ট্রানজেকশন সমর্থন:
- MySQLi ট্রানজেকশন (transactions) সমর্থন করে, যা নিশ্চিত করে যে ডেটাবেসের একাধিক অপারেশন একসাথে সফলভাবে সম্পন্ন হবে, অথবা কোনো একটি অপারেশন ব্যর্থ হলে সেগুলো ফিরিয়ে দেওয়া হবে।
- প্রস্তুতকৃত স্টেটমেন্ট (Prepared Statements):
- MySQLi prepared statements ব্যবহার করে, যার ফলে ইনপুট ডেটা এবং SQL কোড আলাদা থাকে। এটি নিরাপত্তা বাড়ায় এবং কোডকে আরও দক্ষ এবং দ্রুত করে তোলে।
- এনক্রিপশন সাপোর্ট:
- MySQLi SSL (Secure Socket Layer) এবং এনক্রিপশন সমর্থন করে, যা ডেটাবেসের সাথে নিরাপদ সংযোগ স্থাপন করতে সহায়তা করে।
MySQLi এর সাথে সংযোগ তৈরি
MySQLi দিয়ে MySQL ডেটাবেসের সাথে সংযোগ স্থাপন করা খুব সহজ। নিচে দুটি পদ্ধতির উদাহরণ দেয়া হলো—প্রসিডিওরাল এবং অবজেক্ট-ওরিয়েন্টেড।
1. প্রসিডিওরাল পদ্ধতি (Procedural Method)
<?php
// MySQLi সংযোগ
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// সংযোগ তৈরি
$conn = mysqli_connect($servername, $username, $password, $dbname);
// সংযোগ সফল হলে
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
2. অবজেক্ট-ওরিয়েন্টেড পদ্ধতি (Object-Oriented Method)
<?php
// MySQLi সংযোগ
$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);
}
echo "Connected successfully";
?>
MySQLi ব্যবহার করে ডেটাবেস অপারেশন
1. ডেটা ইনসার্ট করা (Insert Data)
<?php
// MySQLi সংযোগ
$conn = new mysqli("localhost", "root", "", "test_db");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// INSERT কোয়েরি
$sql = "INSERT INTO users (name, email) VALUES ('John Doe', 'john.doe@example.com')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
2. ডেটা রিট্রিভ করা (Retrieve Data)
<?php
// MySQLi সংযোগ
$conn = new mysqli("localhost", "root", "", "test_db");
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();
?>
3. Prepared Statements ব্যবহার করা
<?php
// MySQLi সংযোগ
$conn = new mysqli("localhost", "root", "", "test_db");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Prepared Statement
$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);
// ইনপুট ভ্যালু সেট করা
$name = "Jane Doe";
$email = "jane.doe@example.com";
// স্টেটমেন্ট এক্সিকিউট করা
$stmt->execute();
echo "New record created successfully";
// স্টেটমেন্ট বন্ধ করা
$stmt->close();
$conn->close();
?>
MySQLi এবং PDO এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | MySQLi | PDO |
|---|---|---|
| ডেটাবেস সমর্থন | শুধুমাত্র MySQL | MySQL, PostgreSQL, SQLite, MSSQL ইত্যাদি |
| স্টেটমেন্ট টাইপ | Procedural এবং Object-Oriented | শুধুমাত্র Object-Oriented |
| প্রিপেয়ারড স্টেটমেন্ট | সমর্থিত | সমর্থিত |
| ট্রানজেকশন সমর্থন | সমর্থিত | সমর্থিত |
| এক্সটেনশন ব্যবহার | MySQLi এক্সটেনশন প্রয়োজন | PDO এক্সটেনশন প্রয়োজন |
MySQLi হল একটি শক্তিশালী এবং উন্নত পিএইচপি এক্সটেনশন যা MySQL ডেটাবেসের সাথে যোগাযোগের জন্য ব্যবহৃত হয়। এটি বিভিন্ন বৈশিষ্ট্য যেমন প্রস্তুতকৃত স্টেটমেন্ট, ট্রানজেকশন, এবং একাধিক ডেটাবেস অপারেশন সমর্থন করে। MySQLi ব্যবহার করার মাধ্যমে ডেভেলপাররা নিরাপদ এবং দ্রুত ডেটাবেস ইন্টারঅ্যাকশন তৈরি করতে পারে।
Read more