Sunday, November 19, 2017

Belajar Node.js Part 16 - Where MySQL




Ketika menyeleksi records dari sebuah table, kita dapat memfilter seleksi dengan menggunakan pernyataan "WHERE".

Contohnya, jika kita menyeleksi record dengan address "Jalan Bodas 3":

var mysql = require('mysql');

var connection = mysql.createConnection({
  host: "localhost",
  user: "nama_anda",
  password: "password_anda",
  database: "dbsaya"
});

connection.connect(function(err) {
  if (err) throw err;
  connection.query("SELECT * FROM pelanggans WHERE address = 'Jalan Bodas 3'", function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

Simpan kode tersebut dengan nama "mysql_8.js", kemudian jalankan perintah ini:
node mysql_8.js

Hasilnya akan seperti ini:

[
  { id: 11, name: 'Andre', address: 'Jalan Bodas 3'}
]

Karakter Wildcard

Kita juga bisa menyeleksi records yang dimulai, termasuk, atau berakhir dengan sebuah frasa.

Gunakan  wildcard '%' untuk nilai nol, satu, atau banyak karakter.

Contohnya, jika kita menyeleksi records yang alamatnya dimulai dari huruf 'S':

var mysql = require('mysql');

var connection = mysql.createConnection({
  host: "localhost",
  user: "nama_anda",
  password: "password_anda",
  database: "dbsaya"
});

connection.connect(function(err) {
  if (err) throw err;
  connection.query("SELECT * FROM pelanggans WHERE address LIKE 'S%'", function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

Simpan kode tersebut dengan nama "mysql_9.js", kemudian jalankan perintah ini:
node mysql_9.js
Hasilnya akan seperti ini:

[
  { id: 8, name: 'Si Dani', address: 'Jalan Kaktus 33'},
  { id: 14, name: 'Si Yuli', address: 'Jalan Beringin 16'}
]

[MY_ADS/]

Meng-Escape Nilai Query

Ketika nilai query merupakan variabel yang disediakan oleh user, kita seharusnya meng-escape nilainya.

Hal ini ditujukan untuk mencegah SQL Injection, yang sering dilakukan ketika hacking.

Modul MySQL memiliki metode untuk meng-escape nilai query.

Contohnya, jika kita meng-escape nilai query dengan menggunakan metode mysql.escape():

var adr = 'Jalan Kumbang 8';
var sql = 'SELECT * FROM pelanggans WHERE address = ' + mysql.escape(adr);
con.query(sql, function (err, result) {
  if (err) throw err;
  console.log(result);
});

Kita juga bisa menggunakan tanda tanya (?) sebagai sebuah placeholder untuk nilai yang kita ingin escape.

Dalam hal ini, variabel dikirim sebagai parameter ke-dua dalam method query():

Contohnya, jika kita ingin meng-escape nilai query dengan tanda tanya (?):

var adr = 'Jalan Kumbang 8';
var sql = 'SELECT * FROM pelanggans WHERE address = ?';
con.query(sql, [adr], function (err, result) {
  if (err) throw err;
  console.log(result);
});

Jika kita memiliki banyak placeholder, gunakan array sebagai input:

var name = 'Dina';
var adr = 'Jalan Kumbang 8';
var sql = 'SELECT * FROM pelanggans WHERE name = ? OR address = ?';
con.query(sql, [name, adr], function (err, result) {
  if (err) throw err;
  console.log(result);
});

Sumber:
https://www.w3schoools.com