execute와 query의 차이점은?
💡execute
- execute 메서드는 MySQL2 모듈의 Prepared Statement를 사용하여 쿼리를 실행하는 방법
- Prepared Statement ? 쿼리와 파라미터를 분리해서 전달하며, 이를 통해 쿼리의 재사용성을 높이고 SQL Injection과 같은 보안 문제를 방지할 수 있음
const mysql = require('mysql2');
const connection = mysql.createConnection({
host: 'localhost',
user: 'your_user',
password: 'your_password',
database: 'your_database'
});
const sql = 'SELECT * FROM users WHERE id = ?';
const values = [1];
connection.execute(sql, values, (error, results) => {
if (error) {
console.error(error);
return;
}
console.log(results);
});
💡query
- query 메서드는 단순한 쿼리를 실행하는 방법
- 문자열로 된 쿼리를 직접 전달하며, Prepared Statement와는 달리 쿼리와 데이터를 병합하여 전달하는 것이 아니기 때문에 보안 측면에서 덜 안전할 수 있음
const mysql = require('mysql2');
const connection = mysql.createConnection({
host: 'localhost',
user: 'your_user',
password: 'your_password',
database: 'your_database'
});
const sql = 'SELECT * FROM users WHERE id = 1';
connection.query(sql, (error, results) => {
if (error) {
console.error(error);
return;
}
console.log(results);
});
💡 요약
- execute는 Prepared Statement를 사용하여 쿼리와 파라미터를 분리하여 안전하고 효율적인 방식으로 쿼리를 실행
- query는 단순한 쿼리 실행에 사용되며 Prepared Statement의 보안 장점을 제공하지 않음
LIST