PHP PHP에서 prepare()와 bind_param() 사용예제
페이지 정보

본문
<?php
// 데이터베이스 연결 정보
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";
// 데이터베이스 연결
$conn = new mysqli($servername, $username, $password, $dbname);
// 연결 확인
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// 입력받을 이름과 나이
$name = "홍길동"; // 예시 데이터
$age = 30; // 예시 데이터
// SQL 쿼리 템플릿 준비 (Prepare Statement)
$sql = "INSERT INTO users (name, age) VALUES (?, ?)";
$stmt = $conn->prepare($sql);
// prepare() 실패 시 오류 처리
if (!$stmt) {
die("Prepare failed: " . $conn->error);
}
// 파라미터 바인딩 (Bind Parameters)
// 'si'는 순서대로 name은 string, age는 integer임을 나타냅니다.
$stmt->bind_param("si", $name, $age);
// 쿼리 실행 (Execute Statement)
if ($stmt->execute()) {
echo "새로운 레코드가 성공적으로 입력되었습니다.";
} else {
echo "레코드 삽입 실패: " . $stmt->error;
}
// Statement 종료
$stmt->close();
// 데이터베이스 연결 종료
$conn->close();
?>
bind_param()
메서드:
- 역할:
prepare()
로 준비된 SQL 쿼리 템플릿의 플레이스홀더에 실제 데이터를 바인딩합니다. - 동작 방식:
- 첫 번째 인수로 바인딩할 파라미터의 데이터 타입을 나타내는 문자열을 받습니다.
i
: integer (정수)d
: double (실수)s
: string (문자열)b
: blob (바이너리 데이터)
- 이후 인수로 바인딩할 실제 변수의 참조를 순서대로 전달합니다.
bind_param()
은 전달된 데이터를 SQL 쿼리에 직접 삽입하는 대신, 데이터베이스 서버에 안전하게 전달하여 플레이스홀더를 대체합니다. 이렇게 하면 SQL Injection 공격을 효과적으로 방지할 수 있습니다.
- 첫 번째 인수로 바인딩할 파라미터의 데이터 타입을 나타내는 문자열을 받습니다.
- 반환 값: 성공 시
true
, 실패 시false
를 반환합니다.
- 다음글숫자값만 가져오기 25.02.26
댓글목록
등록된 댓글이 없습니다.