현재 위치: > 최신 기사 목록> MySQLI_STMT :: 삽입 작업을 처리하도록 준비하십시오

MySQLI_STMT :: 삽입 작업을 처리하도록 준비하십시오

gitbox 2025-05-26

1. 왜 mysqli_stmt :: 삽입 작업을 준비합니까?


  1. 전처리 명세서를 통해 SQL 문의 구조 및 데이터가 분리되어 악의적 인 사용자 주입의 위험을 피합니다.

  2. 실행 효율성 향상 <br> 반복적 인 실행 설명의 경우 데이터베이스 서버는 성능을 향상시키기 위해 SQL 구조를 한 번만 구문 분석하면됩니다.

  3. 명확한 코드 구조 <br> 매개 변수 바인딩은 코드를 쉽게 읽을 수있게하고 접합 문자열의 복잡성을 줄입니다.


2. mysqli_stmt :: 삽입 준비 준비 완료 프로세스

표준 사용 예는 다음과 같습니다.

<code> <? php // 1. 데이터베이스에 연결 $ mysqli = new MySqli ( "gitbox.net", "username", "password", "database");

// 연결을 확인합니다
if ($ mysqli-> connect_errno) {
다이 ( "연결 실패 :". $ mysqli-> connect_error);
}

// 2. SQL 문을 준비하십시오
$ sql = "사용자에 삽입 (사용자 이름, 이메일, 연령) 값 (?,?,?);
$ stmt = $ mysqli-> 준비 ($ sql);

if (! $ stmt) {
다이 ( "전처리 실패 :". $ mysqli-> error);
}

// 3. 파라미터 바인드
// 'ssi'는 매개 변수 유형을 나타내고, s는 문자열을 나타내고, 나는 정수를 나타냅니다.
$ username = "Alice";
$ email = " [email protected] ";
$ Age = 25;
$ stmt-> bind_param ( "ssi", $ username, $ email, $ age);

// 4. 진술을 실행하십시오
if ($ stmt-> execute ()) {
echo "삽입, 삽입 ID는 다음과 같습니다.". $ stmt-> insert_id;
} 또 다른 {
Echo "실행 실패 :". $ stmt-> 오류;
}

// 5. 진술과 연결을 닫습니다
$ stmt-> close ();
$ mysqli-> close ();
?>
</코드>


3. 각 단계에 대한 자세한 설명

1. 데이터베이스에 연결하려면 mysqli 객체를 만듭니다.

새로운 mysqli (호스트, 사용자, Pass, dbname)를 사용하여 데이터베이스에 연결하십시오.
생산 환경에서 Die () 대신 예외 처리 또는 오류 로그를 사용하는 것이 좋습니다.

2. repary ()를 사용하여 전처리 명령문 생성

  • 물음표를 사용 하시겠습니까 ? SQL 문의 매개 변수 자리 표시 자로.

  • 준비 ()false를 반환하면 구문 오류 또는 연결 예외를 의미합니다.

3. 바인드 파라미터 bind_param ()

  • 변수를 진술의 인수에 바인딩합니다.

  • 매개 변수 유형은 문자열로 표시되며 일반적인 것은 다음과 같습니다.

    • s String (String)

    • 나는 정수

    • D 이중 정밀도 (이중)

    • B 바이너리 (blob)

  • 변수는 참조 패스 여야하며 실행 전에 할당해야합니다.

4. Execute execute ()

  • 전처리 문을 실행하려면 $ stmt-> execute ()를 호출하십시오.

  • 반환 된 결과에 따라 실행이 성공했는지 판단합니다.

5. 자원을 닫습니다

  • 전처리 명세서 $ stmt-> close () 를 닫아 서버 리소스를 확보하십시오.

  • 데이터베이스 연결을 닫으십시오 $ mysqli-> close () .


4. MySQLI_STMT :: 준비를 사용하여 삽입 작업을 처리하기위한 예방 조치

  1. 매개 변수 유형은 올바르게 일치해야합니다 <br> 잘못된 매개 변수 유형으로 인해 데이터 삽입 실패 또는 데이터 유형 변환 오류가 발생할 수 있습니다.

  2. 실행 전에 바운드 변수를 할당해야합니다 . <br> 그렇지 않으면 NULL 또는 잘못된 값이 삽입 될 수 있습니다.

  3. 예외 처리 및 오류 로그 <br> die ()를 직접 사용하는 것이 좋습니다. 예외 메커니즘을 사용하여 프로그램의 견고성을 보장하기 위해 오류를 잡을 수 있습니다.

  4. 배치 인서트 <br> 배치 인서트가 필요한 경우 루프 바인딩 매개 변수 및 실행을 사용할 수 있지만 트랜잭션을 사용하여 원자력을 보장하는 것이 좋습니다.

  5. 캐릭터 인코딩 일관성 <br> 데이터베이스 및 PHP 스크립트의 문자 인코딩이 일관성이 있는지 확인하고 코드를 피하십시오.

  6. insert_id주의 <br> $ stmt-> insert_id를 사용하여 AutoinCrement 기본 키를 얻을 때 테이블에 자동화 열이 있는지 확인하십시오.