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