목차
WHERE 조건절 - 특정 조건의 데이터만 가져오기
% 와일드카드 - 0개 이상의 임의의 문자 대응
Query 값 회피 방법1 - mysql.escape() 메서드
Query 값 회피 방법2 - ? 자리표시자
? 자리표시자가 여럿인 경우
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' }
]
주소 복사
랜덤 이동
최신댓글