본문 바로가기

#3 Database 🗃️/3-1 MySQL

[MySQL2 모듈] execute vs query

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