Node.js MySQL 위치


필터로 선택

테이블에서 레코드를 선택할 때 "WHERE" 문을 사용하여 선택을 필터링할 수 있습니다.

예시

주소가 "Park Lane 38"인 레코드를 선택하십시오.

var mysql = require('mysql');

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

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);
  });
});

위의 코드를 "demo_db_where.js"라는 파일에 저장하고 파일을 실행합니다.

"demo_db_where.js" 실행

C:\Users\Your Name>node demo_db_where.js

다음과 같은 결과를 얻을 수 있습니다.

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


와일드카드 문자

주어진 문자나 구로 시작하거나 포함하거나 끝나는 레코드를 선택할 수도 있습니다.

'%' 와일드카드를 사용하여 0개, 1개 또는 여러 문자를 나타냅니다.

예시

주소가 문자 'S'로 시작하는 레코드 선택:

var mysql = require('mysql');

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

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);
  });
});

위의 코드를 "demo_db_where_s.js"라는 파일에 저장하고 파일을 실행합니다.

"demo_db_where_s.js" 실행

C:\Users\Your Name>node demo_db_where_s.js

다음과 같은 결과를 얻을 수 있습니다.

[
  { id: 8, name: 'Richard', address: 'Sky st 331'},
  { id: 14, name: 'Viola', address: 'Sideway 1633'}
]

쿼리 값 이스케이프

쿼리 값이 사용자가 제공한 변수인 경우 값을 이스케이프해야 합니다.

이는 데이터베이스를 파괴하거나 오용하는 일반적인 웹 해킹 기법인 SQL 주입을 방지하기 위한 것입니다.

MySQL 모듈에는 쿼리 값을 이스케이프하는 메서드가 있습니다.

예시

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);
});

?이스케이프하려는 값의 자리 표시자로 사용할 수도 있습니다 .

이 경우 변수는 query() 메서드의 두 번째 매개변수로 전송됩니다.

예시

? 자리 표시자 방법 을 사용하여 쿼리 값을 이스케이프합니다 .

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);
});

자리 표시자가 여러 개인 경우 배열에는 다음 순서대로 여러 값이 포함됩니다.

예시

여러 자리 표시자:

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);
});