Monday, April 27, 2020

Cara membuat koneksi SQLite3 dengan PHP dan contohnya

Anda pasti pernh menemukan satu file dengan berekstensi .db belakangan ini, itu adalah database SQLite. SQLite3 merupakan salah satu dari banyaknya database (DBMS) yang paling mudah digunakan karena berbasis file. Bentuk Query-nya pun masih sama dengan sintaks SQL dan bersifat relasional. Tidak hanya di Android, SQLite3 pun dapat digunakan oleh PHP.

Sebelum menggunakan SQLite, jika menggunakan localhost, maka tentunya harus ada konfigurasi Apache dalam XAMPP, antara lain:

Ubah dan uncomment atau hilangkan tanda komentar pada file php.ini dalam folder php/php.ini:


...
extension=php_pdo_sqlite.dll
...
extension=php_sqlite3.dll
...
[sqlite3]
sqlite3.extension_dir =
...


Setelah itu restart Apache dengan cara Stop dan Start kembali. Jika hal ini tidak digunakan, maka saat load class SQLite akan terdapat tampilan berikut:

Fatal error: Class 'SQLite3' not found in F:\xampp\htdocs\sqlite\open-sqlite3.php on line 3

Berikut adalah cara membuat dan mengakses sebuah database SQLite3 di PHP:


<?php
$db = new SQLite3('local.db');

if(!$db) {
  echo $db->lastErrorMsg();
} else {
  echo "Open database success...\n";
}

echo realpath("local.db");

echo "<br/><br/>";

// CARA 1
 $q = $db->query('SELECT *, COUNT(*) as count FROM face_info');

 while ($r = $q->fetchArray()) {
     //var_dump($r);
     $baris_kedua[] = $r;
 }
 // Gunakan count untuk mengetahui num_rows atau jumlah baris
 echo '<br/><br/>Jumlah baris tabel face_info adalah '.$q->fetchArray()[7].' atau '.$baris_kedua[0]['count'].'<br/>';


// CARA 2
$sql =<<<EOF
 SELECT * FROM face_info;
EOF;

 $query = $db->query($sql);
 if(!$query){
   echo $db->lastErrorMsg();
 } else {
     while ($row = $query->fetchArray()) {
         //print_r($row);
         $line_row[] = $row;
     }
 }
 // Menampilkan satu data ID
 echo '<br/><br/>Selanjutnya CARA 2, ID kedua adalah '.$line_row[1]['dwFaceId'].'<br/>';


// CARA 3, hanya mengambil satu baris data (single)
$sql1 =<<<EOF
      SELECT * FROM face_info WHERE dwFaceId="1";
EOF;

 $query1 = $db->querySingle($sql1, true);
 if(!$query1){
   echo $db->lastErrorMsg();  // Jaga-jaga kalau tidak ada data
 } else {
     //print_r($query1);
  // Menampilkan satu data ID
  echo '<br/><br/>Selanjutnya CARA 3, ID pertama adalah '.$query1['dwFaceId'].'<br/>';
 }

// Contoh mengambil gambar tipe blob dari data CARA 1
echo '<br/>CARA 1<br/><img src="data:image/png;base64,' . base64_encode( $baris_kedua[0]['FaceMB'] ) . '" width="100"/>';
// Contoh mengambil gambar tipe blob dari data CARA 3
echo '<br/>CARA 3<br/><img src="data:image/png;base64,' . base64_encode( $query1['FaceMB'] ) . '" width="100"/><br/>';

// Contoh simpan gambar ke dalam folder
echo "<br/><br/>Contoh simpan gambar ke dalam folder<br/>";
    $path = "./images/";
    // option 1
 $file = fopen($path.$baris_kedua[0][1].".jpeg","w") or die("Unable to open file!");
 echo "File name: ".$path.$baris_kedua[0][1].".jpeg";
 fwrite($file, base64_decode($baris_kedua[0]['FaceMB']));
 fclose($file);

 // option 2 (sederhana)
 // file_put_contents($path."/".$name, base64_decode($image));

?>


Jika menggunakan XAMPP, maka pastikan file .db masih dalam satu folder yang sama di htdocs. Apabila dijalankan pada browser dengan akses localhost, maka terlihat keterangan berikut:

Open database success...


Maka silahkan gunakan kode SQL seperti biasa untuk mengakses file local.db secara CRUD. Jika ingin mengaksesnya layaknya phpmyadmin silahkan gunakan DB Browser for SQLite. Contact us kalau ingin contoh file local.db

No comments:

Post a Comment