Multiple Queries এর জন্য Prepared Statements

MySQLi Prepared Statements - মাইএসকিউএল আই (MySQLi) - Database Tutorials

336

Prepared Statements কী?

Prepared Statements হল একটি নিরাপদ এবং কার্যকর পদ্ধতি, যা ডেটাবেসে কুয়েরি চালানোর জন্য ব্যবহৃত হয়। এটি SQL ইনজেকশন (SQL Injection) থেকে সুরক্ষা প্রদান করে এবং কুয়েরি এক্সিকিউশন দ্রুততর করতে সাহায্য করে। সাধারণত, প্রস্তুত করা কুয়েরিগুলি ডেটাবেসের সাথে একাধিক বার চালানো হতে পারে, যার ফলে পারফরম্যান্স উন্নত হয়।

Multiple Queries চালানোর ক্ষেত্রে, একাধিক কুয়েরি একসাথে prepared statements এর মাধ্যমে কার্যকরভাবে পরিচালনা করা যেতে পারে। এতে নিরাপত্তা এবং কার্যক্ষমতা উভয়ই নিশ্চিত হয়।


MySQLi Prepared Statements ব্যবহার করে Multiple Queries চালানো

MySQLi এক্সটেনশন ব্যবহার করে একাধিক কুয়েরি চালানোর জন্য multi_query() ফাংশন ব্যবহার করা যেতে পারে। তবে, যখন prepared statements এর মাধ্যমে একাধিক কুয়েরি চালাতে হয়, তখন আমরা প্রতিটি কুয়েরি আলাদাভাবে প্রিপেয়ার এবং এক্সিকিউট করি।

1. Multiple Queries এর জন্য Prepared Statements উদাহরণ

এখানে, একটি উদাহরণ দেওয়া হলো যেখানে দুটি পৃথক কুয়েরি একাধিক prepared statements ব্যবহার করে একযোগে চালানো হবে।

<?php
// ডেটাবেস সংযোগ
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";

// সংযোগ স্থাপন
$conn = mysqli_connect($servername, $username, $password, $dbname);

// সংযোগ চেক
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

// প্রথম কুয়েরি (INSERT)
$sql1 = "INSERT INTO users (username, email) VALUES (?, ?)";
$stmt1 = $conn->prepare($sql1);
$stmt1->bind_param("ss", $username, $email);

// প্রথম কুয়েরি চালানো
$username = "JohnDoe";
$email = "john.doe@example.com";
$stmt1->execute();

// দ্বিতীয় কুয়েরি (UPDATE)
$sql2 = "UPDATE users SET email = ? WHERE username = ?";
$stmt2 = $conn->prepare($sql2);
$stmt2->bind_param("ss", $new_email, $username);

// দ্বিতীয় কুয়েরি চালানো
$new_email = "john.doe@newdomain.com";
$username = "JohnDoe";
$stmt2->execute();

// সংযোগ বন্ধ করা
$stmt1->close();
$stmt2->close();
$conn->close();

echo "Multiple queries executed successfully!";
?>

এখানে, দুটি পৃথক কুয়েরি তৈরি করা হয়েছে। প্রথমটি INSERT কুয়েরি যা নতুন ব্যবহারকারী যুক্ত করে, এবং দ্বিতীয়টি UPDATE কুয়েরি যা ব্যবহারকারীর ইমেইল ঠিকানা আপডেট করে।

  • $stmt1->bind_param("ss", $username, $email); ফাংশনটি প্রথম কুয়েরির জন্য username এবং email ভ্যালুগুলি প্রস্তুত করে।
  • $stmt2->bind_param("ss", $new_email, $username); ফাংশনটি দ্বিতীয় কুয়েরির জন্য new_email এবং username ভ্যালুগুলি প্রস্তুত করে।

2. Multiple Queries একই Prepared Statement-এ

যদি একাধিক কুয়েরি একই prepared statement ব্যবহার করে চালাতে চান, তবে multi_query() ফাংশনটি ব্যবহার করতে পারেন, তবে এটি সাধারণভাবে SQL ইনজেকশনের জন্য প্রস্তুত করা হয় না। তবে, একই prepared statement এর মধ্যে একাধিক কুয়েরি চালানোর ক্ষেত্রে multiple statements ব্যবহৃত হয়।

<?php
// ডেটাবেস সংযোগ
$conn = mysqli_connect($servername, $username, $password, $dbname);

// সংযোগ চেক
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

// একাধিক কুয়েরি একসাথে
$query = "
    INSERT INTO users (username, email) VALUES ('Alice', 'alice@example.com');
    UPDATE users SET email = 'alice.new@example.com' WHERE username = 'Alice';
";

if ($conn->multi_query($query)) {
    echo "Multiple queries executed successfully!";
} else {
    echo "Error executing queries: " . $conn->error;
}

// সংযোগ বন্ধ করা
$conn->close();
?>

এখানে, multi_query() ফাংশনটি একাধিক SQL কুয়েরি একসঙ্গে চালানোর সুযোগ দেয়। যদি একাধিক কুয়েরি সফলভাবে সম্পন্ন হয়, তাহলে "Multiple queries executed successfully!" বার্তা প্রদর্শিত হবে।


Prepared Statements এর সুবিধা

1. নিরাপত্তা বৃদ্ধি

Prepared statements SQL ইনজেকশন থেকে রক্ষা করে, কারণ ইউজার ইনপুট সরাসরি কুয়েরির মধ্যে প্রবাহিত হয় না। এর পরিবর্তে, ডেটাবেসে কুয়েরি পাঠানোর আগে parameterized queries তৈরি করা হয়।

2. কুয়েরি পারফরম্যান্স বৃদ্ধি

Prepared statements কুয়েরি একাধিক বার চালানোর জন্য উপযুক্ত, যা বারবার কুয়েরি পুনঃপ্রস্তুত করার প্রক্রিয়া কমিয়ে পারফরম্যান্স উন্নত করে।

3. কোডের পুনঃব্যবহারযোগ্যতা

একটি prepared statement বারবার ব্যবহার করা সম্ভব, যা কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি করে। এটি একাধিক কুয়েরি চালানোর জন্য কার্যকরী।


সারাংশ

MySQLi Prepared Statements এর মাধ্যমে একাধিক কুয়েরি পরিচালনা করা হলে, এটি নিরাপত্তা এবং পারফরম্যান্সের জন্য উপকারী। প্রথমে prepared statements তৈরি করে, ইনপুট ভ্যালুগুলি bind_param() ফাংশনের মাধ্যমে নিরাপদভাবে সংযুক্ত করা হয়। একাধিক কুয়েরি একসাথে চালানোর জন্য multi_query() ফাংশন ব্যবহার করা যেতে পারে, তবে এটি সাধারণত SQL ইনজেকশনের জন্য প্রস্তুত করা হয় না। Prepared statements ব্যবহার করে একাধিক কুয়েরি কার্যকরভাবে চালানো সম্ভব, যা ডাটাবেসের পারফরম্যান্স এবং নিরাপত্তা বাড়ায়।

Content added By
Promotion

Are you sure to start over?

Loading...