MySQLi - Menangani Nilai NULL

Kami telah melihat SQL SELECT perintah bersama WHERE klausa untuk mengambil data dari tabel MySQLi, tetapi ketika kami mencoba memberikan kondisi, yang membandingkan nilai kolom atau kolom NULL, ini tidak bekerja dengan baik.

Untuk menangani situasi seperti itu MySQLi menyediakan tiga operator

  • IS NULL - Operator mengembalikan nilai true jika nilai kolom adalah NULL.

  • IS NOT NULL - Operator mengembalikan nilai true jika nilai kolom bukan NULL.

  • <=> - Operator membandingkan nilai, yang (tidak seperti operator =) benar bahkan untuk dua nilai NULL.

Kondisi yang melibatkan NULL adalah khusus. Anda tidak dapat menggunakan = NULL atau! = NULL untuk mencari nilai NULL di kolom. Perbandingan seperti itu selalu gagal karena tidak mungkin untuk mengatakan apakah itu benar atau tidak. Bahkan NULL = NULL gagal.

Untuk mencari kolom yang ada atau bukan NULL, gunakan IS NULL atau IS NOT NULL.

Menggunakan nilai NULL di Command Prompt

Misalkan sebuah meja tutorials_bks dalam database TUTORIALS dan berisi dua kolom id dan name, di mana nama NULL menunjukkan bahwa nilainya tidak diketahui -

Contoh

Coba contoh berikut -

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> INSERT INTO tutorials_bks (book) values('');
Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO tutorials_bks (book) values('');
Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO tutorials_bks (book) values('');
Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO tutorials_bks (book) values('NULL');
Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO tutorials_bks (book) values('NULL');
Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO tutorials_bks (book) values('NULL');
Query OK, 1 row affected (0.08 sec)

+----+---------+
| id | book    |
+----+---------+
|  1 | java    |
|  2 | java    |
|  3 | html    |
|  4 | c++     |
|  5 | Android |
|  6 |         |
|  7 |         |
|  8 |         |
|  9 | NULL    |
| 10 | NULL    |
| 11 | NULL    |
+----+---------+
11 rows in set (0.00 sec)

mysql>

Untuk menemukan catatan di mana kolom nama adalah atau bukan NULL, query harus ditulis seperti ini -

mysql> SELECT * FROM tutorials_bks WHERE book = "null";
+----+------+
| id | book |
+----+------+
|  9 | NULL |
| 10 | NULL |
| 11 | NULL |
+----+------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM tutorials_bks WHERE book ! = "null";
+----+---------+
| id | book    |
+----+---------+
|  1 | java    |
|  2 | java    |
|  3 | html    |
|  4 | c++     |
|  5 | Android |
|  6 |         |
|  7 |         |
|  8 |         |
+----+---------+
8 rows in set (0.00 sec)

mysql> SELECT * FROM tutorials_bks WHERE book = "";
+----+------+
| id | book |
+----+------+
|  6 |      |
|  7 |      |
|  8 |      |
+----+------+
3 rows in set (0.01 sec)

Menangani Nilai NULL dalam Script PHP

Anda dapat menggunakan kondisi if ... else untuk menyiapkan kueri berdasarkan nilai NULL.

Contoh

Contoh berikut mengambil tutorial_count dari luar dan kemudian membandingkannya dengan nilai yang tersedia di tabel.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   if( isset($tutorial_count )) {
      $sql = 'SELECT tutorial_author, tutorial_count FROM  tcount_tbl
         WHERE tutorial_count = $tutorial_count';
   } else {
      $sql = 'SELECT tutorial_author, tutorial_count
         FROM  tcount_tbl WHERE tutorial_count IS $tutorial_count';
   }
   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Author:{$row['tutorial_author']}  <br> ".
         "Count: {$row['tutorial_count']} <br> ".
         "--------------------------------<br>";
   } 
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>