[그누보드] 그누보드(GNU Board)에서 MySQL Prepared Statement를 사용하는 방법


본문
그누보드는 기본적으로 sql_query() 함수를 사용하지만, Prepared Statement를 위해서는 다음과 같은 방식으로 사용할 수 있습니다:
1. 기본적인 사용 방법:
// 1. Prepared Statement 생성
$sql = "SELECT * FROM {$g5['table_name']} WHERE column = ? AND status = ?";
$stmt = sql_query_prepare($sql);
// 2. 파라미터 바인딩
sql_stmt_bind_param($stmt, "ss", $value1, $value2);
// 3. 실행
$result = sql_stmt_execute($stmt);
// 4. 결과 가져오기
while($row = sql_stmt_fetch_array($result)) {
// 결과 처리
}
// 5. Statement 닫기
sql_stmt_close($stmt);
2. 필요한 함수들 (lib/common.lib.php 또는 별도 파일에 추가):
// Prepared Statement 생성
function sql_query_prepare($sql) {
global $g5;
return mysqli_prepare($g5['connect_db'], $sql);
}
// 파라미터 바인딩
function sql_stmt_bind_param($stmt, $types, ...$params) {
return mysqli_stmt_bind_param($stmt, $types, ...$params);
}
// Statement 실행
function sql_stmt_execute($stmt) {
mysqli_stmt_execute($stmt);
return mysqli_stmt_get_result($stmt);
}
// 결과 배열로 가져오기
function sql_stmt_fetch_array($result) {
return mysqli_fetch_array($result);
}
// Statement 닫기
function sql_stmt_close($stmt) {
return mysqli_stmt_close($stmt);
}
바인딩 파라미터 타입:
- i: integer
- d: double
- s: string
- b: blob
주의사항:
1. 그누보드의 기존 함수들과 호환성을 유지하면서 사용해야 합니다.
2. Prepared Statement는 반복적으로 실행되는 쿼리에서 더 효율적입니다.
3. 보안에 민감한 데이터를 다룰 때 특히 유용합니다.
4. 위의 함수들은 그누보드의 기존 DB 연결을 활용합니다.
이러한 방식으로 SQL Injection 공격을 방지하고 더 안전한 데이터베이스 조작이 가능합니다.
댓글목록0