MySQLi এ CRUD অপারেশন

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

363

MySQLi (MySQL Improved) পিএইচপি এর একটি এক্সটেনশন যা মাইএসকিউএল ডেটাবেসের সাথে কাজ করার জন্য উন্নত ফিচার প্রদান করে। MySQLi ইন্টারফেস ব্যবহার করে আমরা ডেটাবেসে CRUD অপারেশন (Create, Read, Update, Delete) সহজেই সম্পাদন করতে পারি। এইบทে MySQLi তে CRUD অপারেশন কিভাবে কাজ করে তা বিস্তারিতভাবে আলোচনা করা হবে।


১. Create (ডেটা সন্নিবেশ)

MySQLi ব্যবহার করে ডেটাবেসে নতুন রেকর্ড (ডেটা) সন্নিবেশ করতে INSERT INTO SQL স্টেটমেন্ট ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো:

কোড উদাহরণ:

<?php
// MySQLi সংযোগ তৈরি
$mysqli = new mysqli("localhost", "username", "password", "database_name");

// সংযোগ চেক করা
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// SQL কুয়েরি
$sql = "INSERT INTO users (username, email, age) VALUES ('JohnDoe', 'john@example.com', 25)";

// কুয়েরি এক্সিকিউট করা
if ($mysqli->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $mysqli->error;
}

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

এখানে, INSERT INTO কুয়েরি দিয়ে নতুন একটি ইউজার রেকর্ড ডেটাবেসে ইনসার্ট করা হচ্ছে।


২. Read (ডেটা পড়া)

MySQLi ব্যবহার করে ডেটাবেস থেকে ডেটা রিট্রিভ (পড়) করার জন্য SELECT SQL স্টেটমেন্ট ব্যবহার করা হয়। এখানে একটি উদাহরণ দেওয়া হলো যা ডেটাবেস থেকে ইউজারদের তথ্য পড়বে।

কোড উদাহরণ:

<?php
// MySQLi সংযোগ তৈরি
$mysqli = new mysqli("localhost", "username", "password", "database_name");

// সংযোগ চেক করা
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// SQL কুয়েরি
$sql = "SELECT id, username, email, age FROM users";
$result = $mysqli->query($sql);

// রেকর্ড চেক করা এবং প্রদর্শন করা
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["username"]. " - Email: " . $row["email"]. " - Age: " . $row["age"]. "<br>";
    }
} else {
    echo "0 results";
}

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

এখানে, SELECT কুয়েরি ব্যবহার করে users টেবিল থেকে সমস্ত ইউজার রেকর্ড রিট্রিভ করা হয়েছে এবং একটি লুপে প্রদর্শন করা হয়েছে।


৩. Update (ডেটা আপডেট করা)

MySQLi ব্যবহার করে ডেটাবেসে বিদ্যমান ডেটা আপডেট করার জন্য UPDATE SQL স্টেটমেন্ট ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো যা একটি নির্দিষ্ট ইউজারের তথ্য আপডেট করবে।

কোড উদাহরণ:

<?php
// MySQLi সংযোগ তৈরি
$mysqli = new mysqli("localhost", "username", "password", "database_name");

// সংযোগ চেক করা
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// SQL কুয়েরি
$sql = "UPDATE users SET email='john_new@example.com', age=26 WHERE username='JohnDoe'";

// কুয়েরি এক্সিকিউট করা
if ($mysqli->query($sql) === TRUE) {
    echo "Record updated successfully";
} else {
    echo "Error: " . $sql . "<br>" . $mysqli->error;
}

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

এখানে, UPDATE কুয়েরি ব্যবহার করে users টেবিলের একটি নির্দিষ্ট ইউজারের (যার username 'JohnDoe') ইমেইল এবং বয়স আপডেট করা হয়েছে।


৪. Delete (ডেটা মুছে ফেলা)

MySQLi ব্যবহার করে ডেটাবেস থেকে রেকর্ড ডিলিট (মুছে ফেলা) করতে DELETE SQL স্টেটমেন্ট ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো যা একটি নির্দিষ্ট ইউজার রেকর্ড মুছে ফেলবে।

কোড উদাহরণ:

<?php
// MySQLi সংযোগ তৈরি
$mysqli = new mysqli("localhost", "username", "password", "database_name");

// সংযোগ চেক করা
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// SQL কুয়েরি
$sql = "DELETE FROM users WHERE username='JohnDoe'";

// কুয়েরি এক্সিকিউট করা
if ($mysqli->query($sql) === TRUE) {
    echo "Record deleted successfully";
} else {
    echo "Error: " . $sql . "<br>" . $mysqli->error;
}

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

এখানে, DELETE কুয়েরি ব্যবহার করে users টেবিল থেকে 'JohnDoe' ইউজারকে মুছে ফেলা হয়েছে।


MySQLi তে CRUD অপারেশন ব্যবহার করার গুরুত্বপূর্ণ টিপস:

  • Prepared Statements ব্যবহার করা: SQL ইনজেকশন এড়াতে সবসময় প্রিপেয়ার্ড স্টেটমেন্ট ব্যবহার করুন।

    উদাহরণ:

    $stmt = $mysqli->prepare("INSERT INTO users (username, email, age) VALUES (?, ?, ?)");
    $stmt->bind_param("ssi", $username, $email, $age);
    $stmt->execute();
    
  • Error Handling: MySQLi তে কোয়েরি এক্সিকিউট করার সময় যে কোনো ত্রুটি (Error) হ্যান্ডলিং করা গুরুত্বপূর্ণ। $mysqli->error এবং die() ফাংশন ব্যবহার করে ত্রুটি চেক করুন।

সারাংশ

MySQLi ব্যবহার করে পিএইচপি-তে CRUD অপারেশন খুবই সহজ। INSERT, SELECT, UPDATE, এবং DELETE SQL স্টেটমেন্টের মাধ্যমে ডেটাবেসে রেকর্ড ইনসার্ট, রিট্রিভ, আপডেট এবং ডিলিট করা সম্ভব। তবে, সর্বোত্তম নিরাপত্তার জন্য প্রিপেয়ার্ড স্টেটমেন্ট এবং প্যারামিটারাইজড কোয়েরি ব্যবহার করা উচিত, যাতে SQL ইনজেকশন থেকে নিরাপত্তা নিশ্চিত করা যায়।

Content added By

MySQLi এক্সটেনশন ব্যবহার করে PHP এর মাধ্যমে MySQL ডেটাবেজে ডেটা ইনসার্ট করা খুবই সহজ। এই টিউটোরিয়ালে আমরা দেখব কিভাবে MySQLi ব্যবহার করে ডেটাবেজে নতুন রেকর্ড ইনসার্ট করা যায়। আমরা দুইটি পদ্ধতিতে এই কাজটি করতে পারি: প্রোসিজারাল পদ্ধতি এবং অবজেক্ট-ওরিয়েন্টেড পদ্ধতি


১. MySQLi প্রোসিজারাল পদ্ধতিতে ডেটা ইনসার্ট করা

প্রোসিজারাল পদ্ধতিতে ডেটাবেজে ডেটা ইনসার্ট করতে mysqli_query() ফাংশন ব্যবহার করা হয়।

ডেটা ইনসার্ট (INSERT) কোড উদাহরণ

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "your_database";

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

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

// ডেটা ইনসার্টের জন্য SQL কোয়েরি তৈরি করা
$sql = "INSERT INTO users (name, email) VALUES ('John Doe', 'john.doe@example.com')";

// কোয়েরি রান করা
if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

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

এখানে:

  • mysqli_connect(): ডেটাবেজের সাথে সংযোগ স্থাপন করে।
  • mysqli_query(): SQL কোয়েরি চালানোর জন্য ব্যবহার করা হয়।
  • mysqli_error(): যদি কোনো ত্রুটি ঘটে, তা দেখানোর জন্য ব্যবহৃত হয়।
  • mysqli_close(): সংযোগ বন্ধ করতে ব্যবহৃত হয়।

২. MySQLi অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে ডেটা ইনসার্ট করা

অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে ডেটাবেজে ডেটা ইনসার্ট করতে mysqli::query() মেথড ব্যবহার করা হয়।

ডেটা ইনসার্ট (INSERT) কোড উদাহরণ

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "your_database";

// MySQLi অবজেক্ট তৈরি
$conn = new mysqli($servername, $username, $password, $dbname);

// সংযোগ চেক করা
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// ডেটা ইনসার্টের জন্য SQL কোয়েরি তৈরি করা
$sql = "INSERT INTO users (name, email) VALUES ('Jane Doe', 'jane.doe@example.com')";

// কোয়েরি রান করা
if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

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

এখানে:

  • new mysqli(): MySQLi অবজেক্ট তৈরি করে।
  • $conn->query(): SQL কোয়েরি চালানোর জন্য ব্যবহৃত মেথড।
  • $conn->error: ত্রুটির বার্তা দেখানোর জন্য ব্যবহৃত হয়।
  • $conn->close(): সংযোগ বন্ধ করার জন্য ব্যবহৃত হয়।

৩. Prepared Statements ব্যবহার করে ডেটা ইনসার্ট

MySQLi এর Prepared Statements ব্যবহার করলে SQL Injection আক্রমণ থেকে সুরক্ষা পাওয়া যায়। এটি ডেটার ইনপুট সঠিকভাবে হ্যান্ডেল করার জন্য উপকারী।

Prepared Statements উদাহরণ (INSERT)

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "your_database";

// MySQLi অবজেক্ট তৈরি
$conn = new mysqli($servername, $username, $password, $dbname);

// সংযোগ চেক করা
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// SQL Prepared Statement তৈরি করা
$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);

// ইনপুট ডেটা সেট করা
$name = "Alice Smith";
$email = "alice.smith@example.com";

// কোয়েরি রান করা
$stmt->execute();

echo "New record created successfully";

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

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

এখানে:

  • prepare(): SQL স্টেটমেন্ট প্রস্তুত করে।
  • bind_param(): প্যারামিটারগুলো স্টেটমেন্টের সাথে বাইন্ড করে।
  • execute(): কোয়েরি রান করে।

Prepared Statements ব্যবহারের মাধ্যমে ডেটাবেজে ইনপুট ডেটা নিরাপদভাবে ইনসার্ট করা হয়, কারণ এটি ডেটা ভ্যালিডেশন ও সঠিকভাবে হ্যান্ডেল করা নিশ্চিত করে।


৪. একাধিক রেকর্ড ইনসার্ট করা

একাধিক রেকর্ড ইনসার্ট করতে INSERT INTO স্টেটমেন্টে একাধিক ভ্যালু প্রদান করা যেতে পারে।

একাধিক রেকর্ড ইনসার্ট (INSERT)

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "your_database";

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

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

// একাধিক রেকর্ড ইনসার্টের জন্য SQL কোয়েরি তৈরি করা
$sql = "INSERT INTO users (name, email) VALUES 
        ('Alice Brown', 'alice.brown@example.com'),
        ('Bob White', 'bob.white@example.com'),
        ('Charlie Green', 'charlie.green@example.com')";

// কোয়েরি রান করা
if (mysqli_query($conn, $sql)) {
    echo "New records created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

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

এখানে:

  • একাধিক রেকর্ড ইনসার্ট করতে VALUES অংশে একাধিক ভ্যালু কমা দিয়ে আলাদা করা হয়।

সারাংশ

MySQLi এক্সটেনশন ব্যবহার করে PHP এর মাধ্যমে MySQL ডেটাবেজে ডেটা ইনসার্ট করা অনেক সহজ এবং নিরাপদ। আপনি প্রোসিজারাল বা অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে এই কাজটি করতে পারেন। Prepared Statements ব্যবহার করলে SQL Injection আক্রমণ থেকে ডেটাবেজ নিরাপদ থাকে। একাধিক রেকর্ড ইনসার্ট করতে একটি SQL কোয়েরিতে একাধিক ভ্যালু ব্যবহার করা যায়, যা ইনসার্ট অপারেশনকে আরও কার্যকরী করে।

Content added By

MySQLi ব্যবহার করে ডেটাবেস থেকে ডেটা রিড করা (SELECT কুয়েরি এক্সিকিউট করা) একটি খুব সাধারণ কাজ। MySQLi বিভিন্ন পদ্ধতি প্রদান করে যেগুলোর মাধ্যমে SELECT কুয়েরি ব্যবহার করে ডেটা এক্সট্র্যাক্ট করা যায়। MySQLi দিয়ে SELECT কুয়েরি চালানোর দুটি প্রধান পদ্ধতি রয়েছে:

  1. Procedural স্টাইল
  2. Object-Oriented স্টাইল

এই গাইডে, আমরা বিস্তারিতভাবে দুটি পদ্ধতি দেখব এবং দেখব কিভাবে ডেটাবেস থেকে ডেটা রিড করা যায়।


১. Procedural স্টাইলের মাধ্যমে ডেটা রিড করা

Procedural স্টাইলে MySQLi ব্যবহার করার জন্য mysqli_query() এবং mysqli_fetch_assoc() ফাংশন ব্যবহার করা হয়। এখানে mysqli_query() ফাংশন দিয়ে SQL কুয়েরি এক্সিকিউট করা হয় এবং mysqli_fetch_assoc() ফাংশন ব্যবহার করে ফলাফল (results) এক্সট্র্যাক্ট করা হয়।

উদাহরণ: SELECT কুয়েরি এক্সিকিউট করা

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

$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 "No results found";
}

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

ব্যাখ্যা:

  • mysqli_connect(): ডেটাবেসে সংযোগ স্থাপন করা।
  • mysqli_query(): SQL কুয়েরি এক্সিকিউট করা।
  • mysqli_num_rows(): কুয়েরির রিটার্ন করা রেকর্ডগুলোর সংখ্যা চেক করা।
  • mysqli_fetch_assoc(): এক এক করে রেকর্ডগুলো আসবে এবং অ্যাসোসিয়েটিভ অ্যারে আকারে সেগুলো রিটার্ন হবে।

এটি users টেবিলের id, name, এবং email কলাম থেকে ডেটা রিড করে।


২. Object-Oriented স্টাইলের মাধ্যমে ডেটা রিড করা

Object-Oriented স্টাইলের মধ্যে mysqli_query() মেথড এবং fetch_assoc() মেথড ব্যবহার করে ডেটা এক্সট্র্যাক্ট করা হয়।

উদাহরণ: SELECT কুয়েরি এক্সিকিউট করা

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

$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 "No results found";
}

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

ব্যাখ্যা:

  • new mysqli(): ডেটাবেসে সংযোগ স্থাপন করা।
  • $conn->query(): SQL কুয়েরি এক্সিকিউট করা।
  • $result->num_rows: কুয়েরির রিটার্ন করা রেকর্ডগুলোর সংখ্যা চেক করা।
  • $result->fetch_assoc(): এক এক করে রেকর্ডগুলো আসবে এবং অ্যাসোসিয়েটিভ অ্যারে আকারে সেগুলো রিটার্ন হবে।

এখানে users টেবিলের id, name, এবং email কলাম থেকে ডেটা রিড করা হচ্ছে।


৩. একাধিক টেবিল থেকে ডেটা রিড করা (JOIN)

MySQLi ব্যবহার করে একাধিক টেবিল থেকে ডেটা একত্রিত (JOIN) করা যেতে পারে। এটি একটি সাধারণ SELECT কুয়েরি হতে পারে যেখানে দুইটি বা তার বেশি টেবিলের তথ্য একত্রিত করা হয়।

উদাহরণ: JOIN কুয়েরি

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

// সংযোগ পরীক্ষা করা
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// SELECT কুয়েরি (JOIN ব্যবহার)
$sql = "SELECT users.id, users.name, orders.order_id, orders.total_price 
        FROM users 
        INNER JOIN orders ON users.id = orders.user_id";
$result = $conn->query($sql);

// রেজাল্ট চেক করা
if ($result->num_rows > 0) {
    // রেকর্ডগুলো এক্সট্র্যাক্ট করা
    while($row = $result->fetch_assoc()) {
        echo "User ID: " . $row["id"]. " - Name: " . $row["name"]. " - Order ID: " . $row["order_id"]. " - Total Price: " . $row["total_price"]. "<br>";
    }
} else {
    echo "No results found";
}

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

ব্যাখ্যা:

  • এখানে INNER JOIN ব্যবহার করা হয়েছে যা users এবং orders টেবিলকে user_id দ্বারা যুক্ত করে।
  • users টেবিলের id এবং name কলাম এবং orders টেবিলের order_id এবং total_price কলাম থেকে ডেটা রিড করা হচ্ছে।

৪. LIMIT ব্যবহার করা

MySQLi এর মাধ্যমে SELECT কুয়েরি করার সময় LIMIT ব্যবহার করে নির্দিষ্ট সংখ্যক রেকর্ড নিয়ে আসা যায়।

উদাহরণ: LIMIT ব্যবহার করা

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

// সংযোগ পরীক্ষা করা
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// SELECT কুয়েরি (LIMIT ব্যবহার)
$sql = "SELECT id, name, email FROM users LIMIT 5";
$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 "No results found";
}

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

ব্যাখ্যা:

  • এখানে LIMIT 5 ব্যবহার করে প্রথম ৫টি রেকর্ড রিড করা হয়েছে। এটি বিশেষভাবে বড় ডেটাবেসে কাজ করার সময় কার্যকরী হতে পারে।

সারাংশ

MySQLi ব্যবহার করে ডেটাবেস থেকে ডেটা রিড (SELECT কুয়েরি) করা সহজ এবং কার্যকরী। আপনি Procedural বা Object-Oriented স্টাইলে কুয়েরি এক্সিকিউট করতে পারেন। mysqli_query() অথবা $conn->query() ফাংশন ব্যবহার করে কুয়েরি চালানোর পর mysqli_fetch_assoc() অথবা $result->fetch_assoc() ফাংশন ব্যবহার করে রেজাল্ট এক্সট্র্যাক্ট করা হয়। এছাড়া, একাধিক টেবিল থেকে ডেটা একত্রিত করতে JOIN ব্যবহার করা যায়, এবং LIMIT দিয়ে কুয়েরির রেজাল্ট সীমাবদ্ধ করা যায়।

Content added By

MySQLi (MySQL Improved) ব্যবহার করে ডেটাবেসে UPDATE ক্যোয়ারি চালিয়ে বিদ্যমান ডেটা আপডেট করা যায়। এটি সাধারণত তখন ব্যবহৃত হয় যখন আপনি একটি নির্দিষ্ট রেকর্ডের একটি বা একাধিক মান পরিবর্তন করতে চান।

MySQLi এর Object-Oriented API ব্যবহার করে ডেটা আপডেটের জন্য নিচে একটি উদাহরণ দেওয়া হলো:


MySQLi Object-Oriented API এর মাধ্যমে UPDATE ক্যোয়ারি

ডেটাবেসের একটি টেবিলের নির্দিষ্ট রেকর্ডের মান পরিবর্তন করতে UPDATE ক্যোয়ারি ব্যবহার করা হয়। উদাহরণস্বরূপ, নিচে একটি users টেবিলের email ফিল্ড আপডেট করার পদ্ধতি দেওয়া হলো।

উদাহরণ: UPDATE ক্যোয়ারি ব্যবহার করে ডেটা আপডেট করা

<?php
// ডেটাবেসে সংযোগ স্থাপন করা
$mysqli = new mysqli("localhost", "username", "password", "database_name");

// সংযোগ সফল না হলে ত্রুটি দেখানো
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// আপডেট ক্যোয়ারি
$sql = "UPDATE users SET email='newemail@example.com' WHERE id=1";

// ক্যোয়ারি এক্সিকিউট করা
if ($mysqli->query($sql) === TRUE) {
    echo "Record updated successfully.";
} else {
    echo "Error: " . $sql . "<br>" . $mysqli->error;
}

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

এখানে, আমরা users টেবিলের email ফিল্ডটি আপডেট করছি যেখানে id ১।

  1. UPDATE স্টেটমেন্ট দিয়ে টেবিলটি নির্দিষ্ট করা হয়, যেটির কলাম পরিবর্তন করতে হবে।
  2. SET কীওয়ার্ডের মাধ্যমে কোন কলামের মান পরিবর্তন করা হবে তা নির্ধারণ করা হয়।
  3. WHERE ক্লজটি ব্যবহার করা হয়, যাতে শুধুমাত্র নির্দিষ্ট রেকর্ড (এক্ষেত্রে id=1) আপডেট হয়।

যদি স্টেটমেন্টটি সফলভাবে সম্পন্ন হয়, তবে "Record updated successfully." বার্তা দেখানো হবে, অন্যথায় ত্রুটি বার্তা প্রদর্শিত হবে।


Prepared Statements এর মাধ্যমে UPDATE ক্যোয়ারি

প্রিপেয়ারড স্টেটমেন্ট (Prepared Statement) ব্যবহার করলে SQL ইনজেকশন প্রতিরোধ করা যায়, যা নিরাপত্তার জন্য খুবই গুরুত্বপূর্ণ। নিচে Prepared Statement এর মাধ্যমে UPDATE ক্যোয়ারি চালানোর উদাহরণ দেওয়া হলো:

<?php
// ডেটাবেসে সংযোগ স্থাপন করা
$mysqli = new mysqli("localhost", "username", "password", "database_name");

// সংযোগ সফল না হলে ত্রুটি দেখানো
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// প্রিপেয়ারড স্টেটমেন্ট তৈরি করা
$stmt = $mysqli->prepare("UPDATE users SET email = ? WHERE id = ?");

// প্যারামিটার বাইন্ড করা
$stmt->bind_param("si", $email, $id);

// ভ্যালু সেট করা
$email = "updatedemail@example.com";
$id = 1;

// স্টেটমেন্ট এক্সিকিউট করা
$stmt->execute();

// সফলভাবে আপডেট হলে বার্তা
echo "Record updated successfully.";

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

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

এখানে:

  1. prepare() মেথডের মাধ্যমে SQL স্টেটমেন্টটি প্রস্তুত করা হয়।
  2. bind_param() মেথডের মাধ্যমে প্যারামিটার বাইন্ড করা হয়। এখানে "si" মানে প্রথম প্যারামিটার (email) একটি স্ট্রিং (s), এবং দ্বিতীয় প্যারামিটার (id) একটি পূর্ণসংখ্যা (i)।
  3. execute() মেথডের মাধ্যমে প্রস্তুতকৃত স্টেটমেন্ট এক্সিকিউট করা হয়।

এভাবে Prepared Statements ব্যবহার করলে, SQL ইনজেকশন আক্রমণ থেকে ডেটাবেস রক্ষা করা যায়।


MySQLi UPDATE ক্যোয়ারি তে একাধিক রেকর্ড আপডেট

একই UPDATE ক্যোয়ারি দিয়ে একাধিক রেকর্ডও আপডেট করা যেতে পারে, যেখানে WHERE ক্লজে বিভিন্ন শর্ত দেওয়া হয়।

<?php
// ডেটাবেসে সংযোগ স্থাপন করা
$mysqli = new mysqli("localhost", "username", "password", "database_name");

// সংযোগ সফল না হলে ত্রুটি দেখানো
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// একাধিক রেকর্ড আপডেট করার ক্যোয়ারি
$sql = "UPDATE users SET email='bulkupdate@example.com' WHERE id IN (1, 2, 3)";

// ক্যোয়ারি এক্সিকিউট করা
if ($mysqli->query($sql) === TRUE) {
    echo "Records updated successfully.";
} else {
    echo "Error: " . $sql . "<br>" . $mysqli->error;
}

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

এখানে, WHERE id IN (1, 2, 3) দ্বারা id ১, ২ এবং ৩ সহ যেসকল রেকর্ড রয়েছে তাদের email আপডেট করা হবে।


সারাংশ

MySQLi ব্যবহার করে UPDATE ক্যোয়ারি চালানো অত্যন্ত সহজ এবং কার্যকরী। এটি ডেটাবেসে বিদ্যমান রেকর্ডের একটি বা একাধিক কলাম আপডেট করার জন্য ব্যবহৃত হয়। Prepared Statements ব্যবহার করলে SQL ইনজেকশন আক্রমণ প্রতিরোধ করা যায় এবং ডেটাবেসের নিরাপত্তা নিশ্চিত করা যায়। MySQLi এর Object-Oriented API ব্যবহার করলে কোড আরও পরিষ্কার এবং পুনঃব্যবহারযোগ্য হয়।

Content added By

MySQLi ব্যবহার করে ডেটাবেস থেকে ডেটা মুছে ফেলতে DELETE স্টেটমেন্ট ব্যবহার করা হয়। এটি সাধারণত টেবিল থেকে একটি বা একাধিক রেকর্ড মুছে ফেলার জন্য ব্যবহৃত হয়। mysqli_query() ফাংশনের মাধ্যমে ডিলিট অপারেশন করা হয়।


DELETE স্টেটমেন্টের সিনট্যাক্স

DELETE FROM table_name WHERE condition;

এখানে:

  • table_name: সেই টেবিলের নাম যেখানে থেকে ডেটা মুছবেন।
  • condition: সেই শর্ত যা পূর্ণ হলে ডেটা মুছে ফেলা হবে। যদি শর্ত না দেওয়া হয়, তাহলে টেবিলের সব রেকর্ড মুছে যাবে।

MySQLi দিয়ে DELETE অপারেশন

MySQLi দিয়ে DELETE কোয়েরি এক্সিকিউট করতে mysqli_query() ফাংশন ব্যবহার করা হয়। নিচে এর ব্যবহার দেখানো হয়েছে:

উদাহরণ: ডেটা ডিলিট করা

<?php
// MySQLi Procedural API দিয়ে সংযোগ তৈরি
$conn = mysqli_connect("localhost", "root", "", "test_db");

// DELETE কোয়েরি তৈরি করা
$sql = "DELETE FROM users WHERE id = 1";

// কোয়েরি এক্সিকিউট করা
if (mysqli_query($conn, $sql)) {
    echo "Record deleted successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

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

এখানে:

  • mysqli_query($conn, $sql) ফাংশনটি DELETE কোয়েরিটি এক্সিকিউট করে।
  • যদি ডিলিট সফল হয়, তাহলে একটি সাফল্য বার্তা দেখানো হয়।
  • যদি কোনো ত্রুটি ঘটে, তাহলে mysqli_error($conn) এর মাধ্যমে ত্রুটির বার্তা দেখানো হয়।

WHERE শর্ত ব্যবহার করা

WHERE শর্ত ব্যবহার না করলে, টেবিলের সব রেকর্ড মুছে যাবে, যা সাধারণত ভুল হতে পারে। উদাহরণস্বরূপ, যদি আপনি সব রেকর্ড মুছে ফেলতে চান:

$sql = "DELETE FROM users";  // সব রেকর্ড মুছে ফেলবে

তবে, সাধারণত একটি নির্দিষ্ট রেকর্ড ডিলিট করার জন্য WHERE শর্ত ব্যবহার করা উচিত, যেমন:

$sql = "DELETE FROM users WHERE id = 2";  // id 2 এর রেকর্ড ডিলিট হবে

Multiple Records Delete করা

একাধিক রেকর্ড ডিলিট করার জন্য আপনি WHERE শর্তে IN ব্যবহার করতে পারেন:

$sql = "DELETE FROM users WHERE id IN (1, 2, 3)";  // id 1, 2, 3 এর রেকর্ড ডিলিট হবে

এছাড়া, অন্যান্য শর্ত যেমন AND বা OR ব্যবহার করেও একাধিক রেকর্ড ডিলিট করা যেতে পারে।


MySQLi দিয়ে DELETE স্টেটমেন্ট ব্যবহার করে ডেটা মুছে ফেলা সহজ। এটি mysqli_query() ফাংশনের মাধ্যমে এক্সিকিউট করা হয়। WHERE শর্ত ব্যবহার করা উচিত, যাতে আপনি নির্দিষ্ট রেকর্ড ডিলিট করতে পারেন, অন্যথায় পুরো টেবিলের সব রেকর্ড মুছে যাবে।

Content added By

MySQLi এর সাথে prepared statements ব্যবহার করা একটি গুরুত্বপূর্ণ কৌশল যা SQL injection থেকে রক্ষা করে এবং ডাটাবেস কুয়েরি পারফরম্যান্স উন্নত করে। Prepared statements SQL কুয়েরিকে প্যারামিটারাইজড করে, যার ফলে ইউজারের ইনপুট ডেটা কুয়েরির কাঠামো পরিবর্তন করতে পারে না। এটি SQL injection আক্রমণ প্রতিরোধে সাহায্য করে।

নিচে MySQLi এর সাথে Prepared Statements ব্যবহার করার পদ্ধতি বর্ণনা করা হয়েছে।


Prepared Statements ব্যবহার করার ধাপ:


1. MySQLi কানেকশন তৈরি করা

প্রথমে, ডাটাবেসের সাথে সংযোগ তৈরি করতে হবে। এখানে MySQLi এর object-oriented পদ্ধতি ব্যবহার করা হয়েছে।

<?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);
}
?>

2. Prepared Statement তৈরি করা

এবার prepared statement তৈরি করতে হবে। prepare() মেথড ব্যবহার করে, একটি SQL কুয়েরি তৈরি করা হয় যেখানে ইউজারের ইনপুট প্লেসহোল্ডার হিসাবে রাখা হয়।

<?php
// SQL query with placeholder
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND email = ?");
?>

এখানে ? প্লেসহোল্ডার হিসেবে কাজ করছে, যা পরে ইউজারের ইনপুট দ্বারা প্রতিস্থাপিত হবে।


3. Parameters Binding করা

এখন, কুয়েরির প্লেসহোল্ডারগুলোতে ইউজারের ইনপুট বাউন্ড করতে হবে। bind_param() মেথড ব্যবহার করে, ডাটা টাইপ এবং ভ্যালু বাউন্ড করা হয়।

<?php
$username = 'john_doe';  // Example username
$email = 'john@example.com';  // Example email

// 's' indicates string data type for both parameters
$stmt->bind_param("ss", $username, $email);
?>

এখানে "ss" বোঝাচ্ছে যে দুটি প্যারামিটার (username এবং email) string টাইপের।


4. Query Execute করা

ইউজারের ইনপুট বাউন্ড করার পর, execute() মেথড ব্যবহার করে কুয়েরি এক্সিকিউট করা হয়।

<?php
$stmt->execute();
?>

এখন কুয়েরিটি ডাটাবেসে পাঠানো হবে এবং ডাটাবেসের রেজাল্ট ফিরে আসবে।


5. Result Fetch করা

কুয়েরি এক্সিকিউট হওয়ার পর, এর রেজাল্ট ব্যবহার করতে get_result() মেথড ব্যবহার করে রেজাল্ট ফেচ করা হয়। এরপর, আপনি যে কোন ধরনের ডেটা ফেচ করতে পারেন, যেমন fetch_assoc(), fetch_row() ইত্যাদি।

<?php
$result = $stmt->get_result(); // Get the result from query

// Fetch all rows as associative array
while ($row = $result->fetch_assoc()) {
    echo "Username: " . $row['username'] . "<br>";
    echo "Email: " . $row['email'] . "<br>";
}
?>

এখানে fetch_assoc() মেথড ব্যবহার করা হয়েছে, যাতে রেজাল্ট অ্যারে আকারে ফিরে আসে।


6. Prepared Statement বন্ধ করা

এখন, কাজ শেষ হলে, স্টেটমেন্ট এবং কানেকশন বন্ধ করা উচিত।

<?php
$stmt->close();  // Close the prepared statement
$conn->close();  // Close the database connection
?>

পূর্ণ উদাহরণ:

<?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);
}

// SQL query with placeholder
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND email = ?");

// Parameters to bind
$username = 'john_doe';  // Example username
$email = 'john@example.com';  // Example email

// Bind the parameters ('ss' means two string parameters)
$stmt->bind_param("ss", $username, $email);

// Execute the query
$stmt->execute();

// Get the result
$result = $stmt->get_result();

// Fetch and display the data
while ($row = $result->fetch_assoc()) {
    echo "Username: " . $row['username'] . "<br>";
    echo "Email: " . $row['email'] . "<br>";
}

// Close the statement and connection
$stmt->close();
$conn->close();
?>

Prepared Statements এর সুবিধা

  • SQL Injection Prevention: ইউজারের ইনপুট সরাসরি কুয়েরিতে ইনপুট না হওয়ার কারণে SQL injection আক্রমণ প্রতিরোধ করা যায়।
  • Code Efficiency: কোড আরও পরিষ্কার এবং সুরক্ষিত হয়, কারণ প্রতিবার ইউজার ইনপুট এক্সিকিউট করার সময় কুয়েরি আবার তৈরি করতে হয় না।
  • Performance: প্রিপেয়ারড স্টেটমেন্ট ব্যবহার করলে, যদি একই কুয়েরি একাধিক বার চলানো হয়, তাহলে ডাটাবেসের মধ্যে কুয়েরি কম্পাইল করার প্রক্রিয়া একবারই ঘটে, যার ফলে কর্মক্ষমতা বৃদ্ধি পায়।

সারাংশ

MySQLi এর সাথে prepared statements ব্যবহার করে SQL কুয়েরি নিরাপদভাবে এক্সিকিউট করা যায়। এটি SQL injection প্রতিরোধে সহায়ক এবং কোডের কার্যকারিতা ও নিরাপত্তা বৃদ্ধি করে। এই প্রক্রিয়াটি ডাটাবেস কুয়েরি পরিচালনায় একটি অত্যন্ত নিরাপদ এবং কার্যকরী পদ্ধতি।

Content added By
Promotion

Are you sure to start over?

Loading...