• Q&A
  • 회원가입
  • 로그인

[mysql] Node.js - MySQL Where (조건절)

7  

WHERE 조건절 - 특정 조건의 데이터만 가져오기.

1. C:\User\사용자명\hz.js 생성.

 

var mysql = require('mysql');


var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "autoset",

  database: "hz"

});


con.connect(function(err) {

  if (err) throw err;

  var sql = "SELECT * FROM hz_member WHERE mb_name = 'homzzang'";

  con.query(sql, function (err, result, fields) {

    if (err) throw err;

    console.log(result);

  });

});

 


2. CMD 모드에서 아래 명령어 입력해 시작 설정.

 

C:\User\사용자명>node hz.js

 


 

[반환값]

 

[ RowDataPacket { mb_id: 1, mb_name: 'homzzang', mb_level: '10' } ]

 

 

% 와일드카드 - 0개 이상의 임의의 문자 대응.

 

주어진 문자나 구로 시작, 포함 또는 끝나는 레코드를 선택 가능.

0개, 1개 또는 여러 문자를 나타내려면 '%'와일드 카드를 사용.

 

(예) 이름이 h로 시작하는 레코드.


1. C:\User\사용자명\hz.js 생성.

 

var mysql = require('mysql');

 

var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "autoset",

  database: "hz"

});


con.connect(function(err) {

  if (err) throw err;

  var sql = "SELECT * FROM hz_member WHERE mb_name LIKE 'h%'"; // 이름이 h로 시작하는 레코드.

  con.query(sql, function (err, result, fields) {

    if (err) throw err;

    console.log(result);

  });

});

 


2. CMD 모드에서 아래 명령어 입력해 시작 설정.

 

C:\User\사용자명>node hz.js

 


[반환값]

 

[

  RowDataPacket { mb_id: 1, mb_name: 'homzzang', mb_level: '10' },

  RowDataPacket { mb_id: 9, mb_name: 'HHH', mb_level: '4' }

]

 

 

Query 값 회피 방법1 - mysql.escape() 메서드

 

쿼리 값이 사용자가 제공한 변수인 경우 값을 회피 (=escape) 필요.

※ 회피 : 불량한 값을 거르기.

DB를 파괴/오용하는 웹 해킹 기술인 SQL 주입 방지.

※ mysql 모듈의 escape() 메서드 이용하면 해결 가능.

 


1. C:\User\사용자명\hz.js 생성.

 

var mysql = require('mysql');

 

var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "autoset",

  database: "hz"

});


con.connect(function(err) {

  if (err) throw err;

  var name = 'homzzang';

  var sql = 'SELECT * FROM hz_member WHERE mb_name = ' + mysql.escape(name);

  con.query(sql, function (err, result, fields) {

    if (err) throw err;

    console.log(result);

  });

});

 


2. CMD 모드에서 아래 명령어 입력해 시작 설정.

 

C:\User\사용자명>node hz.js

 


[반환값]

 

[ RowDataPacket { mb_id: 1, mb_name: 'homzzang', mb_level: '10' } ]

 

 

Query 값 회피 방법2 - ? 자리표시자

 

회피하려는 값에 대해 ? 자리표시 사용 가능.

이 경우,

변수는 query() 메서드의 두 번째 매개변수에 배열 형태로 전송됨.

 


1. C:\User\사용자명\hz.js 생성.

 

var mysql = require('mysql');


var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "autoset",

  database: "hz"

});


con.connect(function(err) {

  if (err) throw err;

  var name = 'homzzang';

  var sql = 'SELECT * FROM hz_member WHERE mb_name = ?';

  con.query(sql, [name], function (err, result) {

    if (err) throw err;

    console.log(result);

  });

}); 

 


2. CMD 모드에서 아래 명령어 입력해 시작 설정.

 

C:\User\사용자명>node hz.js

 


[반환값]

 

[ RowDataPacket { mb_id: 1, mb_name: 'homzzang', mb_level: '10' } ]

 

 

PS.

? 자리표시자가 여럿인 경우.

 

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

 


1. C:\User\사용자명\hz.js 생성.

 

var mysql = require('mysql');


var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "autoset",

  database: "hz"

});

 

con.connect(function(err) {

  if (err) throw err;

  var name = 'homzzang';

  var level = '1';

  var sql = 'SELECT * FROM hz_member WHERE mb_name = ? OR mb_level = ?';

  con.query(sql, [name, level], function (err, result) {

    if (err) throw err;

    console.log(result);

  });

});

 


2. CMD 모드에서 아래 명령어 입력해 시작 설정.

 

C:\User\사용자명>node hz.js

 


[반환값]

 

[

  RowDataPacket { mb_id: 1, mb_name: 'homzzang', mb_level: '10' },

  RowDataPacket { mb_id: 2, mb_name: 'AAA', mb_level: '1' }

]

 



방문자 수

오늘 752
어제 2,259
최대 2,397
이달 43,322
전체 991,068
Since 2012