Mengakses Database Dari Dalam Artikel Drupal 7

Ada kalanya kita ingin membuat sebuah artikel yang dapat menampilkan data realtime yang diambil dari sebuah tabel dalam database CMS Drupal. Untuk mengakses data dari sebuah tabel dalam database Drupal 7, gunakan text format PHP code dengan script seperti dibawah ini.

Untuk mencari data dari dalam tabel tanpa kondisi apapun:

$query = db_select('nama_tabel', 'g');
$query->fields('g',array('kolom1', 'kolom2', 'kolom3','kolom4','kolom5'));
$result = $query->execute();
db_set_active();

while($record = $result->fetchAssoc()) 
{
	echo 'Data pada kolom 5 adalah '.$record['kolom5'];
}

Untuk mencari data dari dalam tabel dengan 2 buah kondisi (AND):

$query = db_select('nama_tabel', 'g');
$query->fields('g',array('kolom1', 'kolom2', 'kolom3','kolom4','kolom5'));
$query->condition('g.kolom2','kriteria1','=');
$query->condition('g.kolom3','%kriteria2%','LIKE');
$result = $query->execute();
db_set_active();

while($record = $result->fetchAssoc()) 
{
	echo 'Data pada kolom 5 adalah '.$record['kolom5'];
}

Untuk mencari data dari dalam tabel dengan batasan jumlah hasil:

$query = db_select('nama_tabel', 'g');
$query->fields('g',array('kolom1', 'kolom2', 'kolom3','kolom4','kolom5'));
$query->condition('g.kolom2','kriteria1','=');
$query->range(0,1); //Mengambil hasil pencarian 1 baris dimulai dari baris data ke-0
$result = $query->execute();
db_set_active();

while($record = $result->fetchAssoc()) 
{
	echo 'Data pada kolom 5 adalah '.$record['kolom5'];
}

Untuk mencari data dari dalam tabel dan merubah format data untuk field/kolom tertentu:

$query = db_select('nama_tabel', 'g');
$query->fields('g',array('kolom1', 'kolom2', 'kolom3', 'kolom4'));
$query->addExpression("DATE_FORMAT(kolom5,'%d/%m/%Y %H:%i')",'kolom5');
$query->condition('g.kolom1','kriteria1','=');
$query->orderBy('g.last_update','DESC');
$query = $query->execute();
db_set_active();
while($record = $result->fetchAssoc()) 
{
	echo 'Data pada kolom 5 adalah '.$record['kolom5'];
}

Untuk mencari data dari dalam tabel dengan kondisi OR:

$query = db_select('nama_tabel', 'g');
$query->fields('g',array('kolom1', 'kolom2', 'kolom3', 'kolom4'));
if($key != null) 
{
	$query->condition(db_or()
	->condition('g.kolom1', '%'.$key.'%','like')
	->condition('g.kolom2', '%'.$key.'%','like')
	->condition('g.kolom3', '%'.$key.'%','like')
	);
}
$query = $query->execute();
db_set_active();
while($record = $result->fetchAssoc()) 
{
	echo 'Data pada kolom 5 adalah '.$record['kolom5'];
}

Untuk menginput data baru kedalam tabel:

$xid = db_insert('nama_tabel') 
->fields(array(
'kolom1' => $data1, 
'kolom2' => $data2, 
'kolom3' => $data3
))
->execute();

Untuk mengupdate data yang sudah ada dalam tabel:

$num_updated = db_update('nama_tabel') 
->fields(array(
'kolom1' => $databaru1,
'kolom2' => $databaru2,
'kolom3' => $databaru3,
))
->condition('kolom5', 'kriteria1', '=')
->condition('kolom5', 'kriteria2', '>')
->condition('kolom5', '%kriteria3%', 'LIKE')
->execute();

Untuk mengupdate data yang sudah ada dalam tabel dengan penjumlahan otomatis:

$num_updated = db_update('nama_tabel') 
->fields(array('kolom1' => 'nilai1'))
->expression('kolom2', 'kolom2+ 1')
->condition('kolom5', 'kriteria1', '=')
->execute();

Menampilkan data yang tidak cocok. Terkadang kita ingin menampilkan record yang tidak ada di satu tabel tetapi masih ada di tabel lain, maka query ini mungkin bisa membantu:

$query = db_select('employee', 'e');
$query->leftJoin('project', 'p', 'p.id = e.id');
$query->fields('e', array('id', 'names'));
$query->condition('p.id', NULL);
$result= $query->execute()->fetchAllKeyed(0,1);