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문에 직접 %를 넣지 말고 따로 변수로 만들어서 넣으면 된다.