MySQLi এ ডেটা টাইপস এবং ফরম্যাটিং

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

318

MySQLi (MySQL Improved) PHP এর একটি এক্সটেনশন যা MySQL ডেটাবেসের সাথে যোগাযোগ করতে ব্যবহৃত হয়। ডেটাবেসে তথ্য সংরক্ষণ এবং পুনরুদ্ধার করার সময়, ডেটা টাইপ (Data Types) এবং সঠিক ফরম্যাটিং খুবই গুরুত্বপূর্ণ। সঠিক ডেটা টাইপ এবং ফরম্যাট ব্যবহার না করলে, ডেটাবেসে তথ্য সঠিকভাবে স্টোর করা এবং পুনরুদ্ধার করা সম্ভব হয় না।

মাইএসকিউএল ডেটাবেসে বিভিন্ন ধরনের ডেটা টাইপ থাকে, এবং PHP এর মাধ্যমে সেগুলি ব্যবহারের জন্য কিছু নিয়ম অনুসরণ করতে হয়।


MySQLi এ প্রধান ডেটা টাইপস

MySQLi তে MySQL ডেটাবেসে বিভিন্ন ধরনের ডেটা টাইপ ব্যবহৃত হয়। এই ডেটা টাইপগুলো সাধারণত দুইটি ক্যাটাগরিতে ভাগ করা যায়: নম্বরিক (Numeric) এবং অক্ষরিক (String)

১. নম্বরিক ডেটা টাইপস

  • INT: পূর্ণসংখ্যা, ৪ বাইট।
  • FLOAT: দশমিক সংখ্যার জন্য, ছোট বা মাধ্যাম গুণফল।
  • DOUBLE: আরও বেশি নির্ভুল দশমিক সংখ্যা।
  • DECIMAL: সঠিক দশমিক সংখ্যার জন্য, যেমন অর্থনৈতিক হিসাব।
  • TINYINT: ছোট পূর্ণসংখ্যা (১ বাইট)।

২. অক্ষরিক ডেটা টাইপস

  • VARCHAR: ভ্যারিয়েবল দৈর্ঘ্যের স্ট্রিং (১-৬৫,৫৩৫ ক্যারেকটার পর্যন্ত)।
  • CHAR: ফিক্সড দৈর্ঘ্যের স্ট্রিং (১-২৫৫ ক্যারেকটার)।
  • TEXT: বড় টেক্সট স্ট্রিং, ৬৫,৫৩৫ ক্যারেকটার পর্যন্ত।
  • BLOB: বাইনারি ডেটা স্টোর করার জন্য, যেমন ইমেজ বা ফাইল।
  • DATE: ডেটা (যেমন: 'YYYY-MM-DD')।
  • DATETIME: তারিখ এবং সময় (যেমন: 'YYYY-MM-DD HH:MM:SS')।
  • TIME: সময় (যেমন: 'HH:MM:SS')।
  • ENUM: নির্দিষ্ট কিছু মানের মধ্যে নির্বাচন (যেমন: 'male', 'female')।

MySQLi এর মাধ্যমে ডেটা টাইপ ব্যবহারের উদাহরণ

নিচে MySQLi দিয়ে কিভাবে ডেটা টাইপ ব্যবহার করা হয় তার একটি উদাহরণ দেওয়া হল:

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

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

// ডেটাবেসে একটি টেবিল তৈরি করা
$sql = "CREATE TABLE users (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL,
    birthdate DATE,
    salary DECIMAL(10, 2)
)";

// টেবিল তৈরি করা
if ($mysqli->query($sql) === TRUE) {
    echo "Table 'users' created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $mysqli->error;
}

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

এখানে:

  • id কলামটি INT টাইপের, যা পূর্ণসংখ্যা ধারণ করতে পারে।
  • name এবং email কলামগুলো VARCHAR টাইপের, যা স্ট্রিং ধারণ করতে সক্ষম।
  • birthdate কলামটি DATE টাইপের, যা শুধুমাত্র তারিখ ধারণ করতে পারে।
  • salary কলামটি DECIMAL(10, 2) টাইপের, যা দশমিক সংখ্যা ধারণ করবে এবং ১০ অঙ্কের মধ্যে ২ অঙ্ক দশমিক স্থানে থাকবে।

MySQLi দিয়ে ডেটা ইনসার্ট এবং রিট্রিভ করা

MySQLi ব্যবহার করে ডেটাবেসে ডেটা ইনসার্ট এবং রিট্রিভ করার সময়, সঠিক ডেটা টাইপ অনুযায়ী ফরম্যাট নিশ্চিত করতে হবে। এখানে একটি উদাহরণ দেওয়া হলো যেখানে VARCHAR, DATE, এবং DECIMAL টাইপ ব্যবহার করা হয়েছে।

ডেটা ইনসার্ট করা

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

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

// ডেটা ইনসার্ট করার ক্যোয়ারি
$name = "John Doe";
$email = "john.doe@example.com";
$birthdate = "1985-06-15";
$salary = 55000.75;

$stmt = $mysqli->prepare("INSERT INTO users (name, email, birthdate, salary) VALUES (?, ?, ?, ?)");
$stmt->bind_param("sssd", $name, $email, $birthdate, $salary);
$stmt->execute();

echo "New record created successfully.";

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

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

এখানে:

  • sssd প্যারামিটার টাইপ উল্লেখ করা হয়েছে যেখানে:
    • প্রথম দুটি s স্ট্রিং (VARCHAR) টাইপের জন্য।
    • তৃতীয়টি s আবার স্ট্রিং (DATE) টাইপের জন্য।
    • শেষের d দশমিক (DECIMAL) টাইপের জন্য।

ডেটা রিট্রিভ করা

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

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

// ডেটা রিট্রিভ করার ক্যোয়ারি
$sql = "SELECT id, name, email, birthdate, salary FROM users";
$result = $mysqli->query($sql);

// রেজাল্ট চেক করা এবং ডেটা আউটপুট করা
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. " - Birthdate: " . $row["birthdate"]. " - Salary: " . $row["salary"]. "<br>";
    }
} else {
    echo "0 results";
}

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

এখানে ডেটাবেস থেকে ডেটা রিট্রিভ করার পর, id, name, email, birthdate, এবং salary ফিল্ডগুলোর মান আউটপুট করা হয়েছে।


সারাংশ

MySQLi দিয়ে ডেটাবেসের ডেটা টাইপস এবং ফরম্যাটিং সঠিকভাবে পরিচালনা করা অত্যন্ত গুরুত্বপূর্ণ। INT, VARCHAR, DATE, DECIMAL ইত্যাদি ডেটা টাইপ ব্যবহার করে সঠিকভাবে ডেটা ইনসার্ট, আপডেট এবং রিট্রিভ করা সম্ভব। ডেটা টাইপের সঠিক ব্যবহারের মাধ্যমে ডেটাবেসের কর্মক্ষমতা বৃদ্ধি পায় এবং ডেটার সঠিকতা বজায় থাকে।

Content added By

MySQLi (MySQL Improved) PHP এক্সটেনশনটি MySQL ডেটাবেসের সাথে যোগাযোগ করতে ব্যবহৃত হয় এবং PHP তে ডেটাবেস অপারেশন সম্পাদন করার জন্য বিভিন্ন ডেটা টাইপ ব্যবহার করা হয়। MySQLi তে ডেটা টাইপস এবং তাদের ম্যাপিং সঠিকভাবে ব্যবহার করলে, ডেটাবেসের সঠিক পরিচালনা এবং ডেটা সংরক্ষণ নিশ্চিত করা যায়।

PHP এবং MySQL এর মধ্যে ডেটা টাইপ ম্যাপিং বোঝা গুরুত্বপূর্ণ, কারণ MySQLi ডেটাবেসের টাইপগুলোকে PHP এর উপযুক্ত ডেটা টাইপে রূপান্তরিত করতে হবে।


MySQLi তে ডেটা টাইপস এবং তাদের ম্যাপিং

মাইএসকিউএল ডেটাবেসে ব্যবহৃত বিভিন্ন ডেটা টাইপের সাথে PHP তে ব্যবহৃত ডেটা টাইপের একটি সম্পর্ক (ম্যাপিং) আছে। নিচে কিছু সাধারণ MySQL ডেটা টাইপ এবং তাদের PHP ডেটা টাইপের ম্যাপিং দেওয়া হলো:

১. সংখ্যা (Numeric Types)

MySQL Data TypePHP Data Type
INT, TINYINT, SMALLINT, MEDIUMINT, BIGINTint
FLOAT, DOUBLE, DECIMALfloat

ব্যাখ্যা:

  • INT এবং অন্যান্য পূর্ণসংখ্যা টাইপ গুলি MySQLi তে int হিসাবে স্টোর হয় এবং PHP তে এটি int হিসাবে রিটার্ন হয়।
  • FLOAT, DOUBLE, এবং DECIMAL টাইপ গুলি MySQLi তে float হিসাবে স্টোর হয় এবং PHP তে তা float হিসেবেই রিটার্ন হয়। তবে DECIMAL বিশেষভাবে দশমিক সংখ্যা সংরক্ষণ করে।

২. স্ট্রিং (String Types)

MySQL Data TypePHP Data Type
CHAR, VARCHARstring
TEXT, LONGTEXT, MEDIUMTEXTstring
BLOB, LONGBLOB, MEDIUMBLOBstring (binary data, can be treated as binary string)

ব্যাখ্যা:

  • CHAR এবং VARCHAR টাইপগুলি PHP তে string হিসেবে ব্যবহৃত হয়।
  • TEXT ধরনের ক্ষেত্রেও, তা PHP তে string হিসেবে রিটার্ন হয়, কিন্তু এটি অনেক বড় স্ট্রিং হতে পারে।

৩. তারিখ এবং সময় (Date and Time Types)

MySQL Data TypePHP Data Type
DATEstring (format: 'YYYY-MM-DD')
DATETIME, TIMESTAMPstring (format: 'YYYY-MM-DD HH:MM:SS')
TIMEstring (format: 'HH:MM:SS')
YEARint

ব্যাখ্যা:

  • DATE এবং TIME টাইপগুলি PHP তে string হিসেবে রিটার্ন হয়।
  • DATETIME এবং TIMESTAMP টাইপগুলিও string হিসেবেই PHP তে রিটার্ন হয়, তবে তারা তারিখ এবং সময়ের একত্রিত ফরম্যাটে থাকে।
  • YEAR টাইপটি MySQLi তে int হিসেবে ব্যবহৃত হয়।

৪. ENUM এবং SET Types

MySQL Data TypePHP Data Type
ENUM, SETstring (for ENUM, a single value; for SET, a comma-separated list of values)

ব্যাখ্যা:

  • ENUMSET টাইপগুলি MySQLi তে string হিসেবে রিটার্ন হয়, তবে ENUM একটি একক মান ধারণ করে এবং SET একাধিক মান ধারণ করতে পারে (কমা দ্বারা আলাদা করা হয়)।

৫. বাইনারি ডেটা (Binary Data Types)

MySQL Data TypePHP Data Type
BLOB, LONGBLOB, MEDIUMBLOBstring (binary data, treated as raw bytes)

ব্যাখ্যা:

  • BLOB এবং অন্যান্য বাইনারি ডেটা টাইপগুলি PHP তে string হিসেবে রিটার্ন হয়, তবে এই ডেটাগুলি বাইনারি ডেটা হিসেবে থাকে (যেমন ফাইল, ইমেজ ইত্যাদি)।

MySQLi তে ডেটা টাইপ ফরম্যাটিং

MySQLi এর মাধ্যমে ডেটা টাইপ এবং তাদের ফরম্যাটিং নিশ্চিত করার জন্য কিছু গুরুত্বপূর্ণ কনভেনশন অনুসরণ করা উচিত:

  1. স্ট্রিং ফরম্যাটিং:

    • যখন VARCHAR বা TEXT টাইপের ডেটা ইনসার্ট/রিটার্ন করা হয়, তখন এটি সাধারণত PHP তে string আকারে থাকবে। তবে, mysqli_real_escape_string() ফাংশন ব্যবহার করে বিশেষ অক্ষর গুলি সঠিকভাবে Escape করা উচিত।
    $string = "O'Reilly";
    $escaped_string = $mysqli->real_escape_string($string);
    
  2. তারিখ এবং সময় ফরম্যাটিং:

    • MySQLi তে DATE এবং DATETIME টাইপের ডেটা স্টোর করার সময়, Y-m-d (সাল-মাস-দিন) ফরম্যাট ব্যবহার করতে হয়।
    • DATETIME ক্ষেত্রের জন্য Y-m-d H:i:s ফরম্যাট ব্যবহৃত হয়।
    $date = "2024-12-15";
    $datetime = "2024-12-15 14:30:00";
    
  3. বাইনারি ডেটা:

    • BLOB টাইপের ডেটা যখন স্টোর করা হয়, তখন এটি বাইনারি ডেটা হিসেবে PHP তে string আকারে চলে আসে। এতে কোন ফরম্যাটিং বা এস্কেপিং প্রক্রিয়া প্রযোজ্য নয়।
    $image = file_get_contents("path/to/image.jpg");
    

MySQLi তে ডেটা ইনসার্ট এবং রিট্রিভ করা

এখানে একটি উদাহরণ দেওয়া হলো যেখানে MySQLi এর মাধ্যমে বিভিন্ন ডেটা টাইপ ইনসার্ট এবং রিট্রিভ করা হয়েছে:

ডেটা ইনসার্ট করা

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

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

// ডেটা ইনসার্ট করার ক্যোয়ারি
$name = "John Doe";
$email = "john.doe@example.com";
$birthdate = "1985-06-15";
$salary = 55000.75;

$stmt = $mysqli->prepare("INSERT INTO users (name, email, birthdate, salary) VALUES (?, ?, ?, ?)");
$stmt->bind_param("sssd", $name, $email, $birthdate, $salary);
$stmt->execute();

echo "New record created successfully.";

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

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

ডেটা রিট্রিভ করা

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

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

// ডেটা রিট্রিভ করার ক্যোয়ারি
$sql = "SELECT id, name, email, birthdate, salary FROM users";
$result = $mysqli->query($sql);

// রেজাল্ট চেক করা এবং ডেটা আউটপুট করা
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. " - Birthdate: " . $row["birthdate"]. " - Salary: " . $row["salary"]. "<br>";
    }
} else {
    echo "0 results";
}

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

সারাংশ

MySQLi তে ডেটা টাইপ এবং তাদের ম্যাপিং যথাযথভাবে ব্যবহার করা গুরুত্বপূর্ণ। INT, VARCHAR, DECIMAL, DATE, BLOB ইত্যাদি ডেটা টাইপগুলির সঠিক ম্যাপিং PHP এর ডেটা টাইপগুলির সাথে ঘটানো উচিত। সঠিক ডেটা টাইপ ব্যবহার করে আপনি ডেটাবেস অপারেশনগুলিকে কার্যকরভাবে সম্পাদন করতে পারবেন।

Content added By

MySQLi ব্যবহার করে ডেটাবেসে ডেটা সংরক্ষণ বা গ্রহণ করার সময়, ডেটার ফরম্যাটিং এবং এনকোডিং অত্যন্ত গুরুত্বপূর্ণ। সঠিক ফরম্যাটিং এবং এনকোডিং ব্যবহারে ডেটাবেসের সুরক্ষা, পারফরম্যান্স এবং উপযোগিতা নিশ্চিত হয়।

এখানে আমরা বিভিন্ন ডেটা ফরম্যাটিং এবং এনকোডিং কৌশল নিয়ে আলোচনা করব যা MySQLi দিয়ে কার্যকরীভাবে ডেটাবেস অপারেশন পরিচালনা করতে সাহায্য করবে।


1. Character Encoding নির্বাচন

Character Encoding হল একটি সিস্টেম যা ক্যারেক্টারগুলোকে ডিজিটাল কোডে রূপান্তর করে। সঠিক এনকোডিং নির্বাচন করা জরুরি কারণ তা ডেটা সঠিকভাবে সংরক্ষণ, ট্রান্সফার এবং ডিসপ্লে করার জন্য সাহায্য করে।

UTF-8 Encoding

MySQLi দিয়ে ডেটাবেসে ডেটা ইনপুট বা আউটপুট করার সময় UTF-8 এনকোডিং ব্যবহার করা একটি ভালো অভ্যাস, কারণ এটি বিশ্বের প্রায় সব ভাষার ক্যারেক্টার সমর্থন করে। বিশেষত, ইউরোপীয়, এশীয়, এবং আরবি ভাষার ক্যারেক্টারগুলো সঠিকভাবে প্রদর্শিত হয়।

MySQLi Connection-এ Character Set নির্বাচন

MySQLi দিয়ে সংযোগ তৈরি করার পর আপনি এনকোডিং সেট করতে পারেন। এটি mysqli_set_charset() ফাংশনের মাধ্যমে করা যায়।

উদাহরণ:

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

// UTF-8 এনকোডিং সেট করা
mysqli_set_charset($conn, "utf8");

// যদি এনকোডিং সফল হয়
if (mysqli_get_charset($conn)->charset == "utf8") {
    echo "Character set set to UTF-8";
} else {
    echo "Error setting character set";
}

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

এখানে, mysqli_set_charset() ফাংশনটি ডেটাবেসের ক্যারেক্টার এনকোডিংটি UTF-8 সেট করে।


2. Date and Time Formatting

MySQLi দিয়ে ডেটাবেসে Date এবং Time ফরম্যাটিং গুরুত্বপূর্ণ। সাধারণত, MySQL তে DATE, DATETIME, TIMESTAMP ধরনের ডেটা টাইপ ব্যবহার করা হয়।

উদাহরণ: Date and Time format পরিবর্তন

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

// বর্তমান তারিখ এবং সময় ইনপুট
$date = date("Y-m-d H:i:s");  // YYYY-MM-DD HH:MM:SS ফরম্যাট

// কোয়েরি তৈরি
$sql = "INSERT INTO events (event_date) VALUES ('$date')";

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

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

এখানে, date("Y-m-d H:i:s") PHP ফাংশন ব্যবহার করে সঠিক datetime ফরম্যাট তৈরি করা হয়েছে।


3. Data Formatting for Output

যখন ডেটা ডেটাবেস থেকে রিট্রিভ করা হয়, তখন ফরম্যাটিং গুরুত্বপূর্ণ, বিশেষত স্ট্রিং, ডেট, এবং নাম্বার প্রক্রিয়া করার ক্ষেত্রে।

1. String Formatting (যেমন Uppercase, Lowercase)

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

// কোয়েরি তৈরি
$sql = "SELECT name FROM users";
$result = mysqli_query($conn, $sql);

// রেজাল্ট ফেচ এবং ফরম্যাট করা
if (mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {
        // স্ট্রিংকে uppercase তে রূপান্তর
        echo strtoupper($row["name"]) . "<br>";
    }
} else {
    echo "No records found";
}

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

এখানে, strtoupper() ফাংশনটি ব্যবহার করা হয়েছে স্ট্রিংকে uppercase তে রূপান্তর করার জন্য।

2. Number Formatting (যেমন Decimal Points)

ডেটাবেস থেকে নম্বর প্রাপ্তির পর, তা সুন্দরভাবে প্রদর্শন করার জন্য number_format() ফাংশন ব্যবহার করা যেতে পারে।

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

// কোয়েরি তৈরি
$sql = "SELECT price FROM products";
$result = mysqli_query($conn, $sql);

// রেজাল্ট ফেচ এবং ফরম্যাট করা
if (mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {
        // নম্বরকে দুই দশমিক স্থানে ফরম্যাট করা
        echo number_format($row["price"], 2) . "<br>";
    }
} else {
    echo "No records found";
}

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

এখানে, number_format() ফাংশনটি ব্যবহার করা হয়েছে দশমিকের পর ২টি ডিজিট সহ নম্বর ফরম্যাট করার জন্য।


4. Data Sanitization and Encoding (HTML, URL)

যখন আপনি ডেটা ডেটাবেসে ইনসার্ট বা রিট্রিভ করেন, তখন সঠিক sanitization এবং encoding প্রয়োগ করা উচিত যাতে XSS (Cross-Site Scripting) এবং SQL Injection থেকে সুরক্ষা পাওয়া যায়।

HTML Encoding:

<?php
$name = "<script>alert('XSS');</script>";
echo htmlspecialchars($name);  // HTML special characters স্যানিটাইজ করা
?>

URL Encoding:

<?php
$url = "https://www.example.com?name=John Doe&city=New York";
echo urlencode($url);  // URL-এ স্পেস এবং বিশেষ ক্যারেক্টারগুলো এনকোড করা
?>

এখানে, htmlspecialchars() এবং urlencode() ফাংশনগুলি ডেটাকে নিরাপদভাবে প্রক্রিয়া করার জন্য ব্যবহৃত হয়।


5. Handling Special Characters

MySQLi দিয়ে ডেটা ইনপুট করার সময়, কিছু বিশেষ ক্যারেক্টার (যেমন ', ", ;, -- ইত্যাদি) থেকে বিরত থাকার জন্য prepared statements ব্যবহার করা উচিত। এতে SQL Injection আক্রমণ থেকে সুরক্ষা পাওয়া যায়।

উদাহরণ: Prepared Statement দিয়ে ডেটা ইনসার্ট

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

// Prepared Statement তৈরি
$stmt = mysqli_prepare($conn, "INSERT INTO users (name, email) VALUES (?, ?)");

// প্যারামিটার বাইন্ড করা
$name = "O'Reilly";
$email = "john@example.com";
mysqli_stmt_bind_param($stmt, "ss", $name, $email);  // "ss" মানে দুইটি string প্যারামিটার

// এক্সিকিউট করা
mysqli_stmt_execute($stmt);

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

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

এখানে, mysqli_prepare() এবং mysqli_stmt_bind_param() ব্যবহার করা হয়েছে বিশেষ ক্যারেক্টারের সঠিকভাবে প্রক্রিয়া করার জন্য।


MySQLi ব্যবহার করে ডেটা ফরম্যাটিং এবং এনকোডিং খুবই গুরুত্বপূর্ণ ডেটাবেস অপারেশনকে সঠিকভাবে সম্পাদন করতে। সঠিক character encoding, date/time formatting, data sanitization, এবং prepared statements ব্যবহার করে ডেটার সুরক্ষা, পারফরম্যান্স এবং সঠিকতা নিশ্চিত করা যায়।

Content added By

MySQLi এক্সটেনশনে JSON এবং XML ডেটা হ্যান্ডলিং করা একটি গুরুত্বপূর্ণ কার্যকলাপ, কারণ অনেক আধুনিক অ্যাপ্লিকেশন এবং ডেটাবেস JSON এবং XML ডেটা স্টোর এবং রিট্রিভ করার জন্য ব্যবহার করে। MySQLi তে JSON এবং XML ডেটা প্রক্রিয়া করার জন্য কিছু বিশেষ কৌশল এবং ফাংশন ব্যবহৃত হয়, যা ডেটা ফরম্যাটের মানানসই গঠন এবং পার্সিং সহজ করে তোলে।


JSON ডেটা হ্যান্ডলিং

JSON (JavaScript Object Notation) বর্তমানে ডেটা বিনিময়ের সবচেয়ে জনপ্রিয় ফরম্যাট। MySQL 5.7 থেকে JSON ডেটা টাইপের সমর্থন যোগ করা হয়েছে, যার মাধ্যমে MySQL ডেটাবেসে JSON ডেটা সংরক্ষণ এবং প্রসেস করা সহজ হয়েছে। MySQLi তে JSON ডেটা হ্যান্ডল করার জন্য, আপনি MySQLi এর প্যারামিটারাইজড কুয়েরি এবং JSON ফাংশন ব্যবহার করতে পারেন।

১. MySQLi তে JSON ডেটা স্টোর এবং রিট্রিভ করা

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

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

// JSON ডেটা তৈরি করা
$json_data = json_encode(array("name" => "John Doe", "email" => "john.doe@example.com", "age" => 30));

// JSON ডেটা ইনসার্ট করার ক্যোয়ারি
$stmt = $mysqli->prepare("INSERT INTO users (user_data) VALUES (?)");
$stmt->bind_param("s", $json_data);
$stmt->execute();

echo "JSON data inserted successfully.";

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

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

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

// JSON ডেটা রিট্রিভ করার ক্যোয়ারি
$sql = "SELECT user_data FROM users WHERE id = 1";
$result = $mysqli->query($sql);

// রেজাল্ট চেক করা এবং JSON ডেটা আউটপুট করা
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        $user_data = json_decode($row["user_data"], true);
        echo "Name: " . $user_data["name"] . "<br>";
        echo "Email: " . $user_data["email"] . "<br>";
        echo "Age: " . $user_data["age"] . "<br>";
    }
} else {
    echo "0 results";
}

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

ব্যাখ্যা:

  • JSON ডেটা json_encode() ফাংশন দ্বারা PHP অ্যারে থেকে JSON স্ট্রিং এ রূপান্তরিত হয় এবং json_decode() ফাংশন দ্বারা JSON স্ট্রিং থেকে অ্যারে বা অবজেক্টে রূপান্তরিত হয়।
  • INSERT INTO ক্যোয়ারিতে JSON ডেটা ইনসার্ট করার সময় bind_param("s", $json_data) ব্যবহার করা হয়, যেখানে "s" মানে স্ট্রিং (JSON ডেটা)।

২. MySQL JSON ফাংশন ব্যবহার

MySQL JSON ডেটার সাথে কাজ করার জন্য বিভিন্ন ফাংশন সরবরাহ করে যেমন JSON_EXTRACT(), JSON_ARRAY(), JSON_OBJECT() ইত্যাদি।

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

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

// JSON ডেটা থেকে নির্দিষ্ট মান বের করা
$sql = "SELECT JSON_EXTRACT(user_data, '$.name') AS name FROM users WHERE id = 1";
$result = $mysqli->query($sql);

// রেজাল্ট চেক করা এবং আউটপুট করা
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "Name: " . $row["name"] . "<br>";
    }
} else {
    echo "0 results";
}

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

ব্যাখ্যা:

  • JSON_EXTRACT() ফাংশন JSON ডেটার মধ্যে নির্দিষ্ট ফিল্ড বের করতে ব্যবহার হয়। এখানে '$.name' অংশটি JSON অবজেক্ট থেকে "name" প্রপার্টি বের করার নির্দেশ দেয়।

XML ডেটা হ্যান্ডলিং

XML (eXtensible Markup Language) একটি জনপ্রিয় ডেটা ফরম্যাট যা হালকা স্ট্রাকচারড ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়। MySQLi তে XML ডেটা হ্যান্ডলিং করতে PHP এর DOM (Document Object Model) এবং SimpleXML এক্সটেনশনের সাহায্য নেয়া হয়।

১. MySQLi তে XML ডেটা স্টোর এবং রিট্রিভ করা

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

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

// XML ডেটা তৈরি করা
$xml_data = '<?xml version="1.0" encoding="UTF-8"?>';
$xml_data .= '<user><name>John Doe</name><email>john.doe@example.com</email><age>30</age></user>';

// XML ডেটা ইনসার্ট করার ক্যোয়ারি
$stmt = $mysqli->prepare("INSERT INTO users (user_xml_data) VALUES (?)");
$stmt->bind_param("s", $xml_data);
$stmt->execute();

echo "XML data inserted successfully.";

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

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

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

// XML ডেটা রিট্রিভ করার ক্যোয়ারি
$sql = "SELECT user_xml_data FROM users WHERE id = 1";
$result = $mysqli->query($sql);

// রেজাল্ট চেক করা এবং XML ডেটা পার্স করা
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        $xml_data = simplexml_load_string($row["user_xml_data"]);
        echo "Name: " . $xml_data->name . "<br>";
        echo "Email: " . $xml_data->email . "<br>";
        echo "Age: " . $xml_data->age . "<br>";
    }
} else {
    echo "0 results";
}

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

ব্যাখ্যা:

  • XML ডেটা simplexml_load_string() ফাংশন দ্বারা PHP অ্যারে বা অবজেক্টে রূপান্তরিত করা হয়, যাতে XML ডেটার উপর সহজে কাজ করা যায়।
  • XML ডেটা bind_param("s", $xml_data) এর মাধ্যমে স্ট্রিং হিসেবে ইনসার্ট করা হয়।

২. XML ডেটা প্রক্রিয়া করার জন্য SimpleXML এবং DOM ব্যবহার

  • SimpleXML একটি সহজ উপায় প্রদান করে XML ডেটা রিড এবং মডিফাই করার জন্য।
  • DOM (Document Object Model) আরও শক্তিশালী এবং জটিল XML ম্যানিপুলেশনের জন্য ব্যবহৃত হয়।
উদাহরণ: XML ডেটার উপাদান অ্যাক্সেস করা (SimpleXML)
<?php
$xml = simplexml_load_string('<?xml version="1.0"?><user><name>John</name><email>john.doe@example.com</email></user>');
echo $xml->name . " - " . $xml->email;
?>

ব্যাখ্যা:

  • simplexml_load_string() ফাংশন XML ডেটাকে সহজে পার্স করে এবং XML এর ট্যাগের মধ্যে থাকা মানগুলি অ্যাক্সেস করা সহজ করে তোলে।

সারাংশ

MySQLi তে JSON এবং XML ডেটা হ্যান্ডলিং করার জন্য PHP এর বিভিন্ন ফাংশন এবং এক্সটেনশন ব্যবহার করা হয়। JSON ডেটা MySQLi তে স্টোর এবং রিট্রিভ করতে json_encode() এবং json_decode() ফাংশন ব্যবহার করা হয়, এবং XML ডেটা

Content added By
Promotion

Are you sure to start over?

Loading...