bind_param এবং bind_result এর ব্যবহার

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

352

bind_param এবং bind_result কী?

MySQLi এ bind_param() এবং bind_result() ফাংশন দুটি খুবই গুরুত্বপূর্ণ যেগুলি Prepared Statements ব্যবহার করার সময় ডেটাবেসের সাথে নিরাপদ ও কার্যকরীভাবে ইন্টারঅ্যাক্ট করার জন্য ব্যবহৃত হয়।

  • bind_param(): এটি প্রস্তুত (prepared) করা SQL স্টেটমেন্টে প্যারামিটার গুলি সরাসরি বেঁধে দেয়। এর মাধ্যমে, SQL ইনজেকশন আক্রমণ প্রতিরোধ করা যায় এবং ইনপুট প্যারামিটারগুলো সঠিকভাবে ডেটাবেসের সাথে যোগাযোগ করে।
  • bind_result(): এটি একটি প্রস্তুত কোয়েরি থেকে রিটার্ন হওয়া ফলাফলগুলিকে PHP ভেরিয়েবলের সাথে বেঁধে দেয়, যাতে আপনি সহজে সেই ডেটাগুলোর সাথে কাজ করতে পারেন।

১. bind_param() ফাংশনের ব্যবহার

bind_param() ফাংশনটি SQL স্টেটমেন্টের প্যারামিটারগুলিকে PHP ভেরিয়েবলের সাথে যুক্ত করে। এতে ডেটাবেসে ইনপুট ডেটা নিরাপদভাবে প্রবাহিত হয় এবং SQL ইনজেকশন আক্রমণ রোধ হয়।

Syntax:

$stmt->bind_param(type, var1, var2, ...);
  • type: এখানে type হলো একটি স্ট্রিং যা প্যারামিটার টাইপ চিহ্নিত করে। কিছু সাধারণ টাইপ হলো:
    • i – Integer (পূর্ণসংখ্যা)
    • d – Double (ভগ্নাংশ)
    • s – String
    • b – Blob (বাইনারি ডেটা)
  • var1, var2,...: ইনপুট ভেরিয়েবল গুলি যা কোয়েরিতে ব্যবহার হবে।

উদাহরণ: bind_param() ব্যবহার করা

<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// প্রস্তুত স্টেটমেন্ট
$stmt = $mysqli->prepare("SELECT id, name, email FROM users WHERE email = ? AND age = ?");

// bind_param() দিয়ে প্যারামিটার বেঁধে দেওয়া
$stmt->bind_param("si", $email, $age);  // "s" মানে string এবং "i" মানে integer

$email = "user@example.com";
$age = 25;

// কোয়েরি এক্সিকিউট করা
$stmt->execute();

// ফলাফল প্রক্রিয়া করা
$stmt->close();
$mysqli->close();
?>

এখানে, bind_param() ব্যবহার করে $email এবং $age ভেরিয়েবলগুলোকে SQL স্টেটমেন্টে প্যারামিটার হিসেবে বেঁধে দেয়া হয়েছে।


২. bind_result() ফাংশনের ব্যবহার

bind_result() ফাংশনটি একটি স্টেটমেন্টের রিটার্ন হওয়া ফলাফলগুলোকে PHP ভেরিয়েবলগুলোর সাথে বেঁধে দেয়। এই ফাংশন ব্যবহার করার মাধ্যমে, আপনি কোয়েরির আউটপুট সরাসরি PHP ভেরিয়েবলগুলোতে ব্যবহার করতে পারবেন।

Syntax:

$stmt->bind_result(var1, var2, ...);
  • var1, var2,...: কোয়েরি থেকে আনা ফলাফলগুলোকে PHP ভেরিয়েবলগুলির সাথে বেঁধে দেয়া।

উদাহরণ: bind_result() ব্যবহার করা

<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// প্রস্তুত স্টেটমেন্ট
$stmt = $mysqli->prepare("SELECT id, name, email FROM users WHERE email = ?");

// bind_param() দিয়ে প্যারামিটার বেঁধে দেওয়া
$stmt->bind_param("s", $email);
$email = "user@example.com";

// কোয়েরি এক্সিকিউট করা
$stmt->execute();

// bind_result() দিয়ে ফলাফল বেঁধে দেওয়া
$stmt->bind_result($id, $name, $email);

// ফলাফল প্রক্রিয়া করা
while ($stmt->fetch()) {
    echo "ID: " . $id . "<br>";
    echo "Name: " . $name . "<br>";
    echo "Email: " . $email . "<br><br>";
}

// স্টেটমেন্ট বন্ধ করা
$stmt->close();
$mysqli->close();
?>

এখানে, bind_result() ব্যবহার করা হয়েছে যাতে id, name, এবং email ভেরিয়েবলগুলো কোয়েরির ফলাফল থেকে পাওয়া ডেটার সাথে বেঁধে যায়। এর পর, fetch() ব্যবহার করে একে একে ডেটা আনা হয় এবং প্রিন্ট করা হয়।


৩. bind_param() এবং bind_result() এর সমন্বিত ব্যবহার

এই দুটি ফাংশন একসাথে ব্যবহার করে আপনি একটি প্রস্তুত SQL কোয়েরি থেকে ডেটা সুরক্ষিতভাবে ইনপুট ও আউটপুট করতে পারবেন।

উদাহরণ: bind_param() এবং bind_result() এর সমন্বিত ব্যবহার

<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// প্রস্তুত স্টেটমেন্ট
$stmt = $mysqli->prepare("SELECT id, name, email FROM users WHERE age = ?");

// bind_param() দিয়ে প্যারামিটার বেঁধে দেওয়া
$stmt->bind_param("i", $age);  // "i" মানে integer
$age = 30;

// কোয়েরি এক্সিকিউট করা
$stmt->execute();

// bind_result() দিয়ে ফলাফল বেঁধে দেওয়া
$stmt->bind_result($id, $name, $email);

// ফলাফল প্রক্রিয়া করা
while ($stmt->fetch()) {
    echo "ID: " . $id . "<br>";
    echo "Name: " . $name . "<br>";
    echo "Email: " . $email . "<br><br>";
}

// স্টেটমেন্ট বন্ধ করা
$stmt->close();
$mysqli->close();
?>

এখানে, প্রথমে bind_param() ব্যবহার করে ইনপুট প্যারামিটার $age বেঁধে দেওয়া হয়েছে এবং পরে bind_result() ব্যবহার করে কোয়েরির ফলাফল $id, $name, এবং $email ভেরিয়েবলগুলোর সাথে বেঁধে দেওয়া হয়েছে।


সারাংশ

bind_param() এবং bind_result() ফাংশনগুলি MySQLi এর শক্তিশালী এবং নিরাপদ ব্যবহারকে সহজ করে তোলে। bind_param() এর মাধ্যমে SQL ইনপুট প্যারামিটারগুলি সুরক্ষিতভাবে কোয়েরির সাথে যুক্ত করা হয়, যা SQL ইনজেকশন আক্রমণ প্রতিরোধ করতে সাহায্য করে। অন্যদিকে, bind_result() ফাংশনটি কোয়েরির আউটপুট ভেরিয়েবলগুলোর সাথে সংযুক্ত করতে ব্যবহৃত হয়, যা ডেটার সাথে সহজে কাজ করতে সহায়তা করে। এই দুটি ফাংশন একত্রে ব্যবহার করে ডেটাবেসের সাথে নিরাপদ এবং কার্যকরী যোগাযোগ প্রতিষ্ঠিত করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...