백엔드 Back-end/노드 Node.js

Node.js mysql 모듈 query LIKE % 사용시 에러

Tap to restart 2020. 10. 29. 22:00
반응형

mysql 모듈 버전: 2.17.1

 

코드 예

dbPool.getConnection(function (err, conn) {
        conn.query('SELECT * FROM book WHERE bookname LIKE "%?%"; ',
            [q], function (err, results) { //SELECT

                if (conn != null) {
                    conn.release();
                }//DB연결 풀 해제

                console.log('results:', results);
            });

    });

위와 같이 작성하면 원하는 결과물이 나오지 않는다. 

 

원인

그 이유는 ? 대신에 문자열이 들어가면서 SQL 문이 아래처럼 되기 때문이다.

만약 q에 "사랑"이라고 넣었다면,

SELECT * FROM book WHERE bookname LIKE "%\'사랑\'%"; 

사랑 앞뒤에 따옴표가 들어가게 된다.

 

해결책

var query = "%" + q "%";
dbPool.getConnection(function (err, conn) {
        conn.query('SELECT * FROM book WHERE bookname LIKE ?; ',
            [query], function (err, results) { //SELECT

                if (conn != null) {
                    conn.release();
                }//DB연결 풀 해제

                console.log('results:', results);
            });

    });

query문에 직접 %를 넣지 말고 따로 변수로 만들어서 넣으면 된다.

반응형