MySQLi (MySQL Improved) PHP এক্সটেনশনটি MySQL ডেটাবেসের সাথে যোগাযোগ করতে ব্যবহৃত হয় এবং PHP তে ডেটাবেস অপারেশন সম্পাদন করার জন্য বিভিন্ন ডেটা টাইপ ব্যবহার করা হয়। MySQLi তে ডেটা টাইপস এবং তাদের ম্যাপিং সঠিকভাবে ব্যবহার করলে, ডেটাবেসের সঠিক পরিচালনা এবং ডেটা সংরক্ষণ নিশ্চিত করা যায়।
PHP এবং MySQL এর মধ্যে ডেটা টাইপ ম্যাপিং বোঝা গুরুত্বপূর্ণ, কারণ MySQLi ডেটাবেসের টাইপগুলোকে PHP এর উপযুক্ত ডেটা টাইপে রূপান্তরিত করতে হবে।
MySQLi তে ডেটা টাইপস এবং তাদের ম্যাপিং
মাইএসকিউএল ডেটাবেসে ব্যবহৃত বিভিন্ন ডেটা টাইপের সাথে PHP তে ব্যবহৃত ডেটা টাইপের একটি সম্পর্ক (ম্যাপিং) আছে। নিচে কিছু সাধারণ MySQL ডেটা টাইপ এবং তাদের PHP ডেটা টাইপের ম্যাপিং দেওয়া হলো:
১. সংখ্যা (Numeric Types)
| MySQL Data Type | PHP Data Type |
|---|---|
| INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT | int |
| FLOAT, DOUBLE, DECIMAL | float |
ব্যাখ্যা:
- INT এবং অন্যান্য পূর্ণসংখ্যা টাইপ গুলি MySQLi তে int হিসাবে স্টোর হয় এবং PHP তে এটি int হিসাবে রিটার্ন হয়।
- FLOAT, DOUBLE, এবং DECIMAL টাইপ গুলি MySQLi তে float হিসাবে স্টোর হয় এবং PHP তে তা float হিসেবেই রিটার্ন হয়। তবে DECIMAL বিশেষভাবে দশমিক সংখ্যা সংরক্ষণ করে।
২. স্ট্রিং (String Types)
| MySQL Data Type | PHP Data Type |
|---|---|
| CHAR, VARCHAR | string |
| TEXT, LONGTEXT, MEDIUMTEXT | string |
| BLOB, LONGBLOB, MEDIUMBLOB | string (binary data, can be treated as binary string) |
ব্যাখ্যা:
- CHAR এবং VARCHAR টাইপগুলি PHP তে string হিসেবে ব্যবহৃত হয়।
- TEXT ধরনের ক্ষেত্রেও, তা PHP তে string হিসেবে রিটার্ন হয়, কিন্তু এটি অনেক বড় স্ট্রিং হতে পারে।
৩. তারিখ এবং সময় (Date and Time Types)
| MySQL Data Type | PHP Data Type |
|---|---|
| DATE | string (format: 'YYYY-MM-DD') |
| DATETIME, TIMESTAMP | string (format: 'YYYY-MM-DD HH:MM:SS') |
| TIME | string (format: 'HH:MM:SS') |
| YEAR | int |
ব্যাখ্যা:
- DATE এবং TIME টাইপগুলি PHP তে string হিসেবে রিটার্ন হয়।
- DATETIME এবং TIMESTAMP টাইপগুলিও string হিসেবেই PHP তে রিটার্ন হয়, তবে তারা তারিখ এবং সময়ের একত্রিত ফরম্যাটে থাকে।
- YEAR টাইপটি MySQLi তে int হিসেবে ব্যবহৃত হয়।
৪. ENUM এবং SET Types
| MySQL Data Type | PHP Data Type |
|---|---|
| ENUM, SET | string (for ENUM, a single value; for SET, a comma-separated list of values) |
ব্যাখ্যা:
- ENUM ও SET টাইপগুলি MySQLi তে string হিসেবে রিটার্ন হয়, তবে ENUM একটি একক মান ধারণ করে এবং SET একাধিক মান ধারণ করতে পারে (কমা দ্বারা আলাদা করা হয়)।
৫. বাইনারি ডেটা (Binary Data Types)
| MySQL Data Type | PHP Data Type |
|---|---|
| BLOB, LONGBLOB, MEDIUMBLOB | string (binary data, treated as raw bytes) |
ব্যাখ্যা:
- BLOB এবং অন্যান্য বাইনারি ডেটা টাইপগুলি PHP তে string হিসেবে রিটার্ন হয়, তবে এই ডেটাগুলি বাইনারি ডেটা হিসেবে থাকে (যেমন ফাইল, ইমেজ ইত্যাদি)।
MySQLi তে ডেটা টাইপ ফরম্যাটিং
MySQLi এর মাধ্যমে ডেটা টাইপ এবং তাদের ফরম্যাটিং নিশ্চিত করার জন্য কিছু গুরুত্বপূর্ণ কনভেনশন অনুসরণ করা উচিত:
স্ট্রিং ফরম্যাটিং:
- যখন VARCHAR বা TEXT টাইপের ডেটা ইনসার্ট/রিটার্ন করা হয়, তখন এটি সাধারণত PHP তে string আকারে থাকবে। তবে,
mysqli_real_escape_string()ফাংশন ব্যবহার করে বিশেষ অক্ষর গুলি সঠিকভাবে Escape করা উচিত।
$string = "O'Reilly"; $escaped_string = $mysqli->real_escape_string($string);- যখন VARCHAR বা TEXT টাইপের ডেটা ইনসার্ট/রিটার্ন করা হয়, তখন এটি সাধারণত PHP তে string আকারে থাকবে। তবে,
তারিখ এবং সময় ফরম্যাটিং:
- MySQLi তে DATE এবং DATETIME টাইপের ডেটা স্টোর করার সময়,
Y-m-d(সাল-মাস-দিন) ফরম্যাট ব্যবহার করতে হয়। DATETIMEক্ষেত্রের জন্যY-m-d H:i:sফরম্যাট ব্যবহৃত হয়।
$date = "2024-12-15"; $datetime = "2024-12-15 14:30:00";- MySQLi তে DATE এবং DATETIME টাইপের ডেটা স্টোর করার সময়,
বাইনারি ডেটা:
- 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 এর ডেটা টাইপগুলির সাথে ঘটানো উচিত। সঠিক ডেটা টাইপ ব্যবহার করে আপনি ডেটাবেস অপারেশনগুলিকে কার্যকরভাবে সম্পাদন করতে পারবেন।