NTM Solutions

Thứ Bảy, 11 tháng 7, 2020

NODEJS MYSQL-BÀI 06-CÂU LỆNH WHERE

Xem mục lục lập trình NodeJS

01-Lấy dữ liệu có lọc

Khi lấy các dòng tin từ 01 bảng, bạn có thể chọn lọc bằng câu truy vấn “WHERE

Ví dụ: chọn các dòng tin với address là “Park Lane 38

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "nodejs"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT * FROM customers WHERE address = 'Park Lane 38'", function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

Lưu đoạn mã trên với tên tập tin là “demo_db_where.js” và chạy nó.

d:/NODE/node demo_db_where.js

Kết quả xuất ra CMD sẽ là:

[ RowDataPacket { name: 'Ben', address: 'Park Lane 38', id: 12 } ]


02-Ký tự đại diện

Bạn cũng có thể lấy các dòng tin bắt đầu, chứa, hoặc kết thúc bằng 01 từ hay cụm từ cho sẵn.

Ta sử dụng ký tự % để đại diện cho 0,1 hay nhiều ký tự.

Ví dụ: chọn các dòng tin có address bắt đầu bằng chữ “S”

var mysql = require('mysql');

var con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "nodejs"
});

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

Lưu đoạn mã trên với tên “demo_db_where_s.js” và chạy nó.

D:/NODE/node demo_db_where_s.js

Kết quả trả ra CMD sẽ là:

[
  RowDataPacket { name: 'Richard', address: 'Sky st 331', id: 9 },
  RowDataPacket { name: 'Viola', address: 'Sideway 1633', id: 15 }
]

03-Giá trị truy vấn bên ngoài

Khi giá trị câu truy vấn là các biến cung cấp bởi người dùng, bạn cần xử lý các giá trị này.

Điều này là cần thiết để ngăn ngừa hacker tiêm mã độc vào câu truy vấn (SQL injection)

Đây cũng là 01 trong những kỹ thuật phá hoại thông dụng dùng để phá hủy và vô hiệu hóa cơ sở dữ liệu.

Module MySQL có các phương thức để xử lý các giá trị truy vấn đến từ bên ngoài.

Ví dụ: xử lý giá trị bên ngoài bằng phương thức mysql.escape()

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

Bạn cũng có thể dùng dấu ? như là 01 biến lưu giữ tạm cho giá trị bạn muốn xử lý.

Trong trường hợp này, biến được gửi tới tham số thứ 02 trong phương thức query()

Ví dụ:

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

Nếu bạn có nhiều biến tạm, ta sẽ dùng mảng để lưu trữ chúng.

Ví dụ:

var name = 'Amy';
var adr = 'Mountain 21';
var sql = 'SELECT * FROM customers WHERE name = ? OR address = ?';
con.query(sql, [name, adr], function (err, result) {
  if (err) throw err;
  console.log(result);
});

Nếu vẫn chưa rõ các bạn xem thêm video clip sau:

Xem mục lục lập trình NodeJS

By #drM

Không có nhận xét nào:

Đăng nhận xét

Facebook Youtube RSS