কম্পিউটার টিউটোরিয়াল

PHP এবং MySQL-এ 'Boolean' মান হ্যান্ডেল করার পদ্ধতি

আমরা MySQL সংস্করণ 8.0.12 ব্যবহার করছি। প্রথমে MySQL সংস্করণ যাচাই করা যাক:

mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12    | +-----------+ 1 row in set (0.00 sec)

MySQL-এ Boolean ডেটা টাইপের জন্য BOOL, BOOLEAN বা TINYINT(1) ব্যবহার করা যায়। BOOL বা BOOLEAN ব্যবহার করলে MySQL এটিকে অভ্যন্তরীণভাবে TINYINT(1)-এ রূপান্তর করে।

BOOL বা BOOLEAN ডেটা টাইপে true লিটারেল MySQL-এ 1 হিসেবে এবং false লিটারেল 0 হিসেবে উপস্থাপিত হয়, ঠিক PHP/C/C++ ভাষার মতো।

MySQL BOOL বা BOOLEAN-কে TINYINT(1)-এ রূপান্তর করে তা প্রমাণ করার জন্য একটি টেবিল তৈরি করা যাক BOOLEAN বা BOOL কলামসহ।

এখানে BOOLEAN কলামসহ একটি টেবিল তৈরি করা হচ্ছে। টেবিল তৈরির কোয়েরি নিচে দেওয়া হলো:

mysql> create table BoolOrBooleanOrTinyintDemo 
     -> ( 
     -> Id int NOT NULL AUTO_INCREMENT, 
     -> isvalidAddress BOOLEAN, 
     -> PRIMARY KEY(Id) 
     -> ); Query OK, 0 rows affected (0.74 sec)

এখন উপরের টেবিলের DDL যাচাই করতে SHOW CREATE কমান্ড ব্যবহার করা যাক। কোয়েরিটি হলো:

mysql> show create table BoolOrBooleanOrTinyintDemo\G

আউটপুট নিচে দেওয়া হলো:

*************************** 1. row *************************** Table: BoolOrBooleanOrTinyintDemo Create Table: CREATE TABLE `boolorbooleanortinyintdemo` (   `Id` int(11) NOT NULL AUTO_INCREMENT,   `isvalidAddress` tinyint(1) DEFAULT NULL,   PRIMARY KEY (`Id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 1 row in set (0.00 sec)

isvalidAddress কলামটি দেখুন, BOOLEAN ডেটা টাইপ অভ্যন্তরীণভাবে tinyint(1)-এ রূপান্তরিত হয়েছে। এখন true লিটারেল 1 হিসেবে এবং false লিটারেল 0 হিসেবে উপস্থাপিত হবে তা যাচাই করা যাক। টেবিলে কিছু রেকর্ড ইনসার্ট করা যাক true এবং false লিটারেল মানসহ। রেকর্ড ইনসার্ট করার কোয়েরি:

mysql> insert into BoolOrBooleanOrTinyintDemo(isvalidAddress) values(true); Query OK, 1 row affected (0.43 sec) mysql> insert into BoolOrBooleanOrTinyintDemo(isvalidAddress) values(false); Query OK, 1 row affected (0.17 sec) mysql> insert into BoolOrBooleanOrTinyintDemo(isvalidAddress) values(true); Query OK, 1 row affected (0.29 sec) mysql> insert into BoolOrBooleanOrTinyintDemo(isvalidAddress) values(false); Query OK, 1 row affected (0.12 sec) mysql> insert into BoolOrBooleanOrTinyintDemo(isvalidAddress) values(true); Query OK, 1 row affected (0.33 sec)

সিলেক্ট স্টেটমেন্ট দিয়ে টেবিলের সব রেকর্ড দেখানো যাক। কোয়েরিটি হলো:

mysql> select *from BoolOrBooleanOrTinyintDemo;

আউটপুট নিচে দেওয়া হলো:

+----+----------------+ | Id | isvalidAddress | +----+----------------+ |  1 |              1 | |  2 | 0 | |  3 | 1 | |  4 | 0 | |  5 | 1 | +----+----------------+ 5 rows in set (0.00 sec)

উপরের স্যাম্পল আউটপুটে দেখা যাচ্ছে, true = 1 এবং false = 0 হিসেবে উপস্থাপিত হয়েছে।

PHP-এ Boolean হ্যান্ডলিং

PHP-এ যদি true ব্যবহার করা হয় তবে সেটি 1 হিসেবে এবং false 0 হিসেবে উপস্থাপিত হয়।

নিচের PHP কোডটি দেখুন। এখানে isValidAddress ভেরিয়েবলের মান 1 সেট করা হয়েছে, অর্থাৎ if কন্ডিশনটি true হয়ে যাবে এবং if ব্লকটি এক্সিকিউট হবে। কোডটি নিচে দেওয়া হলো:

$isValidAddress = 1; if($isValidAddress) { echo 'true is represented as '; echo ($isValidAddress); } else { echo 'false is represented as '; echo ($isValidAddress); }

আউটপুট হবে: true is represented as 1

যদি isValidAddress ভেরিয়েবলের মান 0 করা হয়, তবে if কন্ডিশনটি false হয়ে যাবে এবং else ব্লকটি এক্সিকিউট হবে। কোডটি নিচে দেওয়া হলো:

$isValidAddress=0; if($isValidAddress) { echo 'true is represented as '; echo ($isValidAddress); } else { echo 'false is represented as '; echo ($isValidAddress); }

আউটপুট হবে: false is represented as 0

সারসংক্ষেপে, MySQL-এ BOOL/BOOLEAN আসলে TINYINT(1) এবং PHP-এও বুলিয়ান মান 1 (true) এবং 0 (false) হিসেবে কাজ করে। তাই PHP এবং MySQL-এর মাঝপথে বুলিয়ান ডেটা হ্যান্ডলিং খুব সহজ এবং সামঞ্জস্যপূর্ণ।

  1. MySQL-এ কলাম মান শাফল করা

  2. MySQL-এ কমা-বিন্যাসকৃত মান সহ র‍্যান্ডম সারি আনার পদ্ধতি

  3. MySQL-এ একক কোয়ারি দিয়ে একটি কলামে একাধিক মান কিভাবে ইনসার্ট করবেন?

  4. PHP-এ null মান সরানো