PHP에서 prepare()와 bind_param() 사용예제 > Web 끄적임

본문 바로가기
사이트 내 전체검색

Web 끄적임

PHP PHP에서 prepare()와 bind_param() 사용예제

페이지 정보

profile_image
작성자 관리자
댓글 0건 조회 2,201회 작성일 25-04-03 09:28

본문

<?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 쿼리 템플릿의 플레이스홀더에 실제 데이터를 바인딩합니다.
  • 동작 방식:
    1. 첫 번째 인수로 바인딩할 파라미터의 데이터 타입을 나타내는 문자열을 받습니다.
      • i: integer (정수)
      • d: double (실수)
      • s: string (문자열)
      • b: blob (바이너리 데이터)
    2. 이후 인수로 바인딩할 실제 변수의 참조를 순서대로 전달합니다.
    3. bind_param()은 전달된 데이터를 SQL 쿼리에 직접 삽입하는 대신, 데이터베이스 서버에 안전하게 전달하여 플레이스홀더를 대체합니다. 이렇게 하면 SQL Injection 공격을 효과적으로 방지할 수 있습니다.
  • 반환 값: 성공 시 true, 실패 시 false를 반환합니다.
추천0 비추천0

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

접속자집계

오늘
600
어제
1,194
최대
2,110
전체
54,104
접속자 : 18 모바일버전

Copyright © NEION All rights reserved.