PHP এবং MySQL ব্যবহার করে ডেটাবেসের তথ্য আপডেট করার জন্য UPDATE কুয়েরি ব্যবহার করা হয়। এই কুয়েরি দিয়ে একটি নির্দিষ্ট টেবিলের এক বা একাধিক রেকর্ডের মান পরিবর্তন করা যায়। এখানে আমরা দেখব কীভাবে PHP দিয়ে MySQL-এ UPDATE কুয়েরি চালানো যায়।
1. UPDATE কুয়েরি সিনট্যাক্স
MySQL-এ UPDATE কুয়েরি সাধারণত এইভাবে লেখা হয়:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
এখানে:
- table_name: যেই টেবিলে ডেটা আপডেট করতে চান, সেই টেবিলের নাম।
- SET column1 = value1, column2 = value2: যেসব কলামের মান পরিবর্তন করবেন, সেগুলি নির্ধারণ করা হয়।
- WHERE condition: কোন রেকর্ডগুলি আপডেট করা হবে, তা নির্দিষ্ট করতে WHERE শর্ত ব্যবহার করা হয়।
নোট: WHERE শর্ত ব্যবহার না করলে, সব রেকর্ড আপডেট হয়ে যাবে, যা অনাকাঙ্ক্ষিত ফলাফল হতে পারে।
2. PHP দিয়ে UPDATE কুয়েরি চালানো
এখন, আমরা দেখব কীভাবে PHP ব্যবহার করে MySQL ডেটাবেসে UPDATE কুয়েরি চালানো যায়।
2.1 mysqli ব্যবহার করে UPDATE Query
<?php
$servername = "localhost"; // সার্ভারের নাম
$username = "root"; // ডেটাবেস ইউজারের নাম
$password = ""; // ইউজারের পাসওয়ার্ড
$dbname = "exampleDB"; // ডেটাবেসের নাম
// MySQL সার্ভারের সাথে সংযোগ তৈরি করা
$conn = new mysqli($servername, $username, $password, $dbname);
// সংযোগ পরীক্ষা করা
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// UPDATE কুয়েরি তৈরি
$sql = "UPDATE users SET email = 'newemail@example.com' WHERE id = 1";
// কুয়েরি এক্সিকিউট করা
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}
// সংযোগ বন্ধ করা
$conn->close();
?>
এখানে:
- UPDATE users: users টেবিলের ডেটা আপডেট করার জন্য।
- SET email = 'newemail@example.com': email কলামের মান আপডেট করা।
- WHERE id = 1: যেই রেকর্ডটির id 1, সেটি আপডেট হবে।
2.2 PDO ব্যবহার করে UPDATE Query
PDO (PHP Data Objects) একটি নিরাপদ এবং শক্তিশালী পদ্ধতি, যেটি একাধিক ডেটাবেস সমর্থন করে।
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "exampleDB";
try {
// PDO সংযোগ তৈরি
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// UPDATE কুয়েরি তৈরি
$sql = "UPDATE users SET email = :email WHERE id = :id";
$stmt = $conn->prepare($sql);
// প্যারামিটার বেঁধে দেওয়া
$stmt->bindParam(':email', $email);
$stmt->bindParam(':id', $id);
// মান সেট করা
$email = 'newemail@example.com';
$id = 1;
// কুয়েরি এক্সিকিউট করা
$stmt->execute();
echo "Record updated successfully";
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
// PDO সংযোগ বন্ধ করা
$conn = null;
?>
এখানে:
- $conn->prepare($sql): PDO-তে কুয়েরি প্রস্তুত করার জন্য।
- $stmt->bindParam(): প্যারামিটার বেঁধে দেওয়া।
- $stmt->execute(): কুয়েরি এক্সিকিউট করা।
3. UPDATE কুয়েরি নিরাপত্তা
MySQL-এ ডেটা আপডেট করার সময় SQL Injection প্রতিরোধ করা অত্যন্ত গুরুত্বপূর্ণ। এর জন্য:
- Prepared Statements ব্যবহার করা উচিত, যেটি পিএইচপি কোডের মাধ্যমে SQL Injection থেকে রক্ষা করে। উল্লিখিত PDO উদাহরণে এটি ইতিমধ্যেই প্রযোজ্য।
- mysqli-তে Prepared Statements ব্যবহার করতে হবে, যেমন:
$stmt = $conn->prepare("UPDATE users SET email = ? WHERE id = ?");
$stmt->bind_param("si", $email, $id); // "s" - string, "i" - integer
$email = 'newemail@example.com';
$id = 1;
$stmt->execute();
এইভাবে, mysqli এবং PDO উভয়ই SQL Injection থেকে নিরাপদ।
4. Multiple Rows Update (একাধিক রেকর্ড আপডেট)
একাধিক রেকর্ড আপডেট করতে হলে WHERE শর্তে একটি উপযুক্ত অবস্থান ব্যবহার করতে হবে। উদাহরণস্বরূপ:
$sql = "UPDATE users SET status = 'inactive' WHERE last_login < '2023-01-01'";
এটি সমস্ত users টেবিলের রেকর্ডের status পরিবর্তন করবে যেখানে last_login তারিখ 2023-01-01 থেকে পূর্ববর্তী।
5. UPDATE কুয়েরি এক্সিকিউট করার পর প্রভাবিত রেকর্ডের সংখ্যা
আপডেট কুয়েরি এক্সিকিউট করার পর, আপনি জানতে পারবেন কতটি রেকর্ড প্রভাবিত হয়েছে। mysqli এবং PDO উভয়ের ক্ষেত্রেই এটি চেক করা সম্ভব।
5.1 mysqli-এ প্রভাবিত রেকর্ডের সংখ্যা:
echo $conn->affected_rows;
5.2 PDO-এ প্রভাবিত রেকর্ডের সংখ্যা:
echo $stmt->rowCount();
এটি আপনাকে জানাবে, কতটি রেকর্ড আপডেট হয়েছে।
সারাংশ
PHP এবং MySQL ব্যবহার করে ডেটাবেসে ডেটা আপডেট করা একটি সাধারণ প্রক্রিয়া, তবে Prepared Statements এবং PDO ব্যবহার করলে SQL Injection থেকে নিরাপদ থাকা যায়। UPDATE কুয়েরি ব্যবহার করে আপনি টেবিলের এক বা একাধিক রেকর্ডের মান পরিবর্তন করতে পারেন, তবে অবশ্যই WHERE শর্ত ব্যবহার করে সঠিক রেকর্ডটি লক্ষ্য করতে হবে। নিরাপত্তা এবং কার্যকারিতা বজায় রাখার জন্য এই কৌশলগুলি অনুসরণ করা গুরুত্বপূর্ণ।
Read more