Multi-query Execution হল এমন একটি ফিচার যা আপনাকে একক কনেকশনের মাধ্যমে একাধিক SQL কুয়েরি একসাথে এক্সিকিউট করার সুবিধা দেয়। MySQLi এ multi-query execution এর মাধ্যমে আপনি একাধিক কুয়েরি একবারে ডাটাবেসে পাঠাতে পারেন এবং সেগুলোর ফলাফল একসাথে পেতে পারেন।
এটি বিশেষভাবে তখন উপকারী যখন একাধিক SQL অপারেশন (যেমন INSERT, UPDATE, DELETE ইত্যাদি) এক সাথে এক্সিকিউট করতে হয় এবং আপনি একাধিক কুয়েরি একযোগে প্রক্রিয়া করতে চান।
Multi-query Execution এর সুবিধা
- পারফরম্যান্স বৃদ্ধি: একাধিক কুয়েরি একযোগে প্রক্রিয়া করা হলে, ডাটাবেসে আলাদা আলাদা কানেকশনের প্রয়োজন হয় না, ফলে পারফরম্যান্স উন্নত হয়।
- কোড কমপ্লেক্সিটি কমানো: একাধিক কুয়েরি একসাথে পাঠানো কোডের কমপ্লেক্সিটি কমায় এবং কোড আরও পরিষ্কার হয়।
1. MySQLi তে Multi-query Execution ব্যবহার করা
এখন, MySQLi এর মাধ্যমে একাধিক কুয়েরি একসাথে এক্সিকিউট করার পদ্ধতি দেখব।
1.1 কানেকশন তৈরি করা
প্রথমে, ডাটাবেসের সাথে কানেকশন তৈরি করতে হবে:
<?php
$host = "localhost"; // Database host
$user = "root"; // Database username
$password = ""; // Database password
$dbname = "test"; // Database name
// MySQLi connection
$conn = new mysqli($host, $user, $password, $dbname);
// Check the connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
1.2 Multiple Queries এক্সিকিউট করা
এখন, একাধিক SQL কুয়েরি একসাথে এক্সিকিউট করার জন্য multi_query() মেথড ব্যবহার করা হবে। নিচে একটি উদাহরণ দেওয়া হলো:
<?php
// Define multiple queries
$query = "INSERT INTO users (username, email) VALUES ('john_doe', 'john@example.com');
UPDATE users SET email = 'newjohn@example.com' WHERE username = 'john_doe';
DELETE FROM users WHERE username = 'old_user';";
// Execute multiple queries
if ($conn->multi_query($query)) {
echo "Queries executed successfully.";
} else {
echo "Error: " . $conn->error;
}
?>
এখানে, তিনটি SQL কুয়েরি একসাথে লিখা হয়েছে:
- একটি INSERT কুয়েরি, যেটি একটি নতুন ইউজার ইনসার্ট করবে।
- একটি UPDATE কুয়েরি, যেটি ইউজারের ইমেইল ঠিক করবে।
- একটি DELETE কুয়েরি, যেটি একটি পুরনো ইউজার ডিলিট করবে।
multi_query() মেথডটি সমস্ত কুয়েরি একসাথে এক্সিকিউট করে এবং সফল হলে true রিটার্ন করবে।
2. Query Results পাওয়া
যেহেতু একাধিক কুয়েরি একসাথে এক্সিকিউট করা হয়েছে, তাই প্রতিটি কুয়েরির জন্য আলাদা ফলাফল পাওয়া যাবে। MySQLi তে multi_query() মেথড ব্যবহার করার পর, আপনি next_result() মেথড ব্যবহার করে একে একে প্রতিটি কুয়েরির ফলাফল পেতে পারেন।
<?php
// Define multiple queries
$query = "SELECT * FROM users;
SELECT COUNT(*) FROM users;";
// Execute the multi-query
if ($conn->multi_query($query)) {
// First result
$result1 = $conn->store_result();
while ($row = $result1->fetch_assoc()) {
echo "Username: " . $row['username'] . "<br>";
}
// Second result (e.g., counting rows)
if ($conn->more_results()) {
$conn->next_result(); // Move to next result
$result2 = $conn->store_result();
$count = $result2->fetch_row();
echo "Total users: " . $count[0];
}
} else {
echo "Error: " . $conn->error;
}
?>
এখানে:
- প্রথম কুয়েরি
SELECT * FROM usersইউজারদের তথ্য রিটার্ন করবে। - দ্বিতীয় কুয়েরি
SELECT COUNT(*) FROM usersইউজারদের মোট সংখ্যা রিটার্ন করবে।
more_results() চেক করে যদি আরও কোন ফলাফল থাকে তবে next_result() মেথড ব্যবহার করে পরবর্তী কুয়েরির ফলাফল প্রাপ্তি নিশ্চিত করা হয়।
3. Multi-query Execution এর সতর্কতা
যদিও multi-query execution দ্রুত এবং কার্যকরী হতে পারে, তবে এটি কিছু সতর্কতার বিষয় নিয়ে আসে:
- SQL Injection: একাধিক কুয়েরি একসাথে পাঠানো হলে, সেগুলোর মধ্যে নিরাপত্তার গ্যাপ থাকতে পারে। তাই prepared statements এবং parameterized queries ব্যবহার করা উচিত, যাতে SQL injection থেকে রক্ষা পাওয়া যায়।
- Error Handling: একাধিক কুয়েরি একসাথে এক্সিকিউট করা হলে, একটির ত্রুটির কারণে সমস্ত কুয়েরির কার্যক্রম বন্ধ হতে পারে। তাই ত্রুটির সঠিক হ্যান্ডলিং করা উচিত।
সারাংশ
MySQLi এর multi-query execution ফিচারটি একাধিক SQL কুয়েরি একযোগে এক্সিকিউট করার সুবিধা দেয়, যা কোডের কার্যকারিতা এবং ডাটাবেসে কার্যক্রম পরিচালনাকে দ্রুত ও কার্যকরী করে। তবে, এই ফিচার ব্যবহার করার সময় সতর্কতা অবলম্বন করা উচিত, বিশেষ করে SQL injection প্রতিরোধ এবং ত্রুটি হ্যান্ডলিংয়ের ক্ষেত্রে।
Read more