CodeIgniter: Fungsi pendukung Query Builder

Untuk penulisan terbaik adalah memanfaatkan query builder yang tersedia di CodeIgniter. Pemanfaatan Query Builder dapat mengurangi kerumitan penulisan coding kedepannya. Untuk dukungan atas penulisan query, terutama untuk proses debuging ada beberapa fungsi pendukung yang sangat membantu.

Field yang terpengaruh

dalam proses insert dan nantinya Update, akan ada field/data yang akan terpengaruh. Untuk mengetahui jumlah yang terpengaruh. Dapat menggunakan
$this->db->affected_rows();

letakkan setelah proses query insert, update dan delete berjalan.

Error

apabila menginginkan proses error dapat terlihat. manfaatkan perintah
$this->db->error();

letakkan dibawah proses query. Pastikan proses query berjalan salah. Dan perintah ini akan mengeluarkan error yang terjadi

 

pastikan debug error dalam keadaan mati dalam configurasi. Bila tidak, error akan keluar tanpa kecuali

Advertisements

CodeIgniter: Menggunakan Query Builder (insert)

Untuk melakukan insert dapat menggunakan query
$sql = "INSERT INTO mytable (title, name) VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")";

penulisan ini akan menyulitkan ketika field yang akan dimasukkan banyak

Dengan memanfaatkan query builder, penulisan dapat dipersingkat sebagai berikut

$data = array(
        'title' => $title,
        'name' => $name
);
$this->db->insert('mytable', $data);
penulisan query yang berjalan sama seperti query insert di atas. Penambahan kutip akan automatis diberikan

proses insert dapat mengembalikan nilai id yang dimasukkan.
$this->db->insert_id();

tidak semua DBMS mendukung fitur ini.
ID yang dikembalikan hanya apabila terdapat field bertipe integer Key Primary dengan kemampuan Autoincrement

Penulisan Query Yang berjalan

untuk melihat query insert yang akan dijalankan dapat memanfaatkan
$this->db->insert_string();

penggunaannya sama seperti insert()

untuk melilhat query yang dijalankan dapat memanfaatkan
$this->db->last_query();

akan mengeluarkan query yang terakhir dijalankan.

CodeIgniter: Menggunakan Query Builder

Untuk penulisan query dapat memanfaatkan Query Builder. Kegunaan query builder ini dapat merapikan dan membuat penulisan coding lebih mudah terbaca


$query = $this->db->get('table_name');
foreach ($query->result() as $row)
{
        echo $row->title;
}

menjalankan query di atas sama seperti menjalankan

select * from table_name

Dengan menambahkan query builder lainnya, hasil query yang dikeluarkan akan berbeda

CodeIgniter: Menjalankan Query

Untuk menjalankan query dapat memanfaatkan perintah

$this->db->query( );

contoh:

$this->db->query('select * from table' );

Hindari menuliskan query langsung dalam kurung.
$sql="select * from table";
$this->db->query('select * from table' );

penulisan yang disarankan adalah yang bersih

Menampilkan Hasil

Terdapat 2 metode menampilkan hasil yaitu dalam bentuk

  • Array
  • Object

Hasil Objek

Untuk menampilkan dalam bentuk objek menggunakan
$query->result();
Ini akan mengeluarkan keseluruhan data yang akan ditarik


$query = $this->db->query('SELECT name, title, email FROM my_table');

foreach ($query->result() as $row)
{
        echo $row->title;
        echo $row->name;
        echo $row->email;
}

Hasil Array

untuk menampilkan bentuk Array menggunakan
$query->result_array()
ini akan mengeluarkan keseluruhan
$query = $this->db->query(‘SELECT name, title, email FROM my_table’);


foreach ($query->result_array() as $row)
{
        echo $row['title'];
        echo $row['name'];
        echo $row['email'];
}

Mengeluarkan hanya 1 Data

Untuk mengeluarkan hanya satu data saja, dapat menggunakan
$query->row();
untuk mengeluarkan berbentuk Objek

$query->row_array();
untuk mengeluarkan berbentuk Array

Mengeluarkan jumlah data

Untuk mengeluarkan jumlah data , menggunakan
$query->num_rows();
yang akan mengembalikan jumlah data yang di query. Hanya untuk query select


$query = $this->db->query('SELECT name, title, email FROM my_table');
echo 'Total Results: ' . $query->num_rows();

Database: menggunakan Dalam Codeigniter

Untuk menggunakan database, pastikan konfigurasi telah dipasang terlebih dahulu. Untuk konfigurasi dapat membaca pada penjelasan configurasi di halaman selanjutnya

Mengaktifkan/Menjalankan Database

Untuk menjalankan dapat melalui beberapa proses

  1. Lakukan pemanggilan

    $this->load->database();

  2. memasukkan database kedalam config autoload

Database Dalam Codeigniter

Untuk menggunakan database, diperlukan pemahaman cara untuk melakukan query dasar seperti

select * from table

Codeigniter hadir dalam bentuk Native maupun bentuk class yang mempermudah dalam melakukan query. Dalam CI kita bisa menggunakan query Builder

Tanya:

ada 2 table yaitu table member dan member_detail. Member berisi 14 data dan member_detail diharuskan memiliki 1 detail! namun ternyata ada masalah penyimpanan sehingga member_detail hanya tersisa 7!!

bagaimana input sekaligus.. apabila kita asumsikan ada 1000 data yang akan di input.

Jawab:

mari telaah dahulu.. buat query contoh lalu ke intinya

query 1 left join

dapatkan dahulu id dari table member

select m.id from member m left join member_detail md on m.id=md.id;

filter hanya yang tidak ada di detail

disini kita cukup memakai where.

where md.id is null

pelajari insert table user

tujuannya mendapatkan

insert into table_detail (field) values();

hal terpenting adalah field apa aja yang di isi

select field yang terpenting

tidak semua field akan terpakai. lebih baik sedikit saja

bikin select (query) pada contoh 1 dengan isi seperti yang akan di insert. pada point ini, saya akan menggabungkan keduanya

lalu gabungkan ke 3 contoh yaitu

insert into (..) values select select m.id from member m left join member_detail md on m.id=md.id;

Kondisi lapangan

maksudnya bisakah jalan sesuai keinginan? nope.. tidak selalu jalan.. bisa kejadian malah akibatnya error dan mysql error. Jadi tolong selalu uji dan test untuk keamanan.

BISAKAH SEMUA DATABASE RELATIONSHIP?

saya blum nyoba. jadi ngak bisa berkata.. BISA.. percobaan dilakukan di mysql.. kalau di sql server mungkin caranya beda.

Preventif error server

salah satu metode yang saya sarankan adalah.. memakai limit pada akhir query! namun saya mencoba di mysql dan cara itu tidak membantu. jadi memang kita harus hati2 dan analisa kedepannya!