개발을 하다보니 쿼리문에서 인젝션에 대한 문제들이 나오기 시작했습니다. 

그래서 쿼리문에 ? 물음표를 넣어두고 query() 함수의 두번째 파라미터 자리에 변수를 넣어줍니다.

이런식으로 사용할 수 있겠죠?

그렇다면 2개 이상은 어떻게 해야될까요?

[] 괄호를 사용하여 2번째 파라미터를 묶어주면 됩니다.

이런식으로 묶어주면 됩니다.

다른 쿼리들도 이렇게 많이 사용하는데 insert문이 조금 특이합니다.

insert into values가 보통입니다만

var sql = 'INSERT INTO table (name, email, age) VALUES(?, ?, ?)';
var params = ['hyun','94onad@naver.com','26']
connection.query(sql, params, function(err, rows, fields){

 

보통은 이렇게 많이들 쓰실텐데 INSERT문은 SET을 사용하기도 합니다. SET을 사용하게 되면 컬럼 전체를 넣어야합니다. 

  var users = {
    userid: req.body.userid,
    pwd: req.body.pwd,
    name: req.body.name,
    email: req.body.email,
    phone: req.body.phone,
    created: today,
    modified: today,
  };
  connection.query("INSERT INTO user SET ?", users, function (error, results, fields)

 

직접 쿼리문 안에 넣어주는 분들도 계시는데 이럴경우 escape() 함수를 사용하는 방법도 있습니다.

var sql = 'SELECT * FROM CLUB WHERE CLUB_SN = ' + mysql.escape(clubSn) + '; ';

 

+ Recent posts