현재 위치: > 최신 기사 목록> fetch_fields, 준비 및 bind_result의 완전한 사용 프로세스는 무엇입니까? 한 기사에서 명확하게 설명하십시오

fetch_fields, 준비 및 bind_result의 완전한 사용 프로세스는 무엇입니까? 한 기사에서 명확하게 설명하십시오

M66 2025-06-23

PHP에서 데이터베이스 운영은 개발자의 일상 작업에 없어서는 안될 부분입니다. 효율성을 향상시키고 SQL 주입 공격을 방지하기 위해 MySQLI에 의해 확장 된 준비된 진술을 사용하는 것은 적극 권장되는 접근법입니다. 이 기사는 MySQLI Fetch_fields 의 사용 프로세스를 자세히 소개하고 PHP의 준비BIND_RESULT를 소개합니다.

1. 방법을 준비하십시오

먼저 데이터베이스 연결을 만들어야합니다. 그런 다음 준비 방법을 사용하여 SQL 명령문을 준비 할 수 있습니다. 이 메소드는 SQL 쿼리를 매개 변수로 받아들이고 준비된 명령문 객체를 반환합니다.

 $mysqli = new mysqli("localhost", "user", "password", "database");

if ($mysqli->connect_error) {
    die("연결이 실패했습니다: " . $mysqli->connect_error);
}

$query = "SELECT id, name, email FROM users WHERE active = ?";
$stmt = $mysqli->prepare($query);

위의 코드에서, 준비 방법은 SQL 문을 전처리하고 후속 파라미터 바인딩을 준비합니다.

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

다음으로 매개 변수를 바인딩해야합니다. BIND_PARAM 메소드는 실제 매개 변수 값을 SQL 문에 바인딩 할 수 있습니다. 이 예에서 쿼리는 활성 필드를 통해 데이터를 필터링하므로 대신 매개 변수를 바인딩해야합니다 .

 $active = 1;
$stmt->bind_param("i", $active);  // "i"정수 유형을 나타냅니다

bind_param 메소드의 첫 번째 매개 변수는 SQL 문의 각 매개 변수의 유형을 나타내는 문자열입니다. 일반적인 유형은 다음과 같습니다.

  • I : 정수

  • D : 이중 정밀 플로팅 포인트

  • S : 문자열

  • B : Blob 유형 데이터

이 예에서는 정수 유형 매개 변수 ( $ active )를 바인딩합니다.

3. 쿼리 실행 ( 실행 )

매개 변수를 바인딩 한 후 실행 메소드를 통해 SQL 문을 실행할 수 있습니다.

 $stmt->execute();

현재 SQL 쿼리가 실행되지만 데이터는 아직 반환되지 않았습니다. fetch_fields를 통해 쿼리 결과의 구조를 얻고 bind_result를 통해 각 열의 값을 바인딩해야합니다.

4. 필드 정보 받기 ( fetch_fields )

Fetch_fields 메소드는 열 이름, 유형 등을 포함하여 쿼리 결과의 필드 정보를 얻을 수 있습니다. 후속 결과 처리에 사용할 수있는 다양한 필드 객체를 반환합니다.

 $fields = $stmt->fetch_fields();
foreach ($fields as $field) {
    echo "필드 이름: " . $field->name . "<br>";
    echo "필드 유형: " . $field->type . "<br>";
}

위의 코드는 각 필드의 이름과 유형을 출력합니다. fetch_fields 메소드에 의해 반환 된 필드 객체에는 Rich Metadata가 포함되어있어 개발자가 데이터베이스 테이블의 구조 정보를 얻도록 촉진합니다.

5. 결과 변수 바인드 ( bind_result )

쿼리를 실행 한 후 BIND_RESULT 메소드를 통해 쿼리 결과 열을 PHP 변수에 바인딩해야합니다. bind_result 메소드를 사용하면 변수를 전달하여 설정에서 각 데이터 행을 추출 할 수 있습니다.

 $stmt->bind_result($id, $name, $email);

여기서는 쿼리 결과의 ID , 이름이메일 필드를 각각 $ ID , $ 이름$ 이메일 변수로 바인딩합니다.

6. 결과 받기 ( Fetch )

결과 변수를 바인딩 한 후 Fetch 메소드를 사용하여 쿼리 결과 행을 행으로 추출 할 수 있습니다.

 while ($stmt->fetch()) {
    echo "ID: $id, Name: $name, Email: $email<br>";
}

페치 메소드는 데이터 행이 성공적으로 얻어 졌는지를 나타내는 부울 값을 반환합니다. 획득이 성공하면 현재 행의 데이터에 바운드 변수를 통해 액세스 할 수 있습니다.

7. 진술과 연결을 닫습니다

모든 작업이 완료되면 준비된 문 및 데이터베이스 연결을 닫아 리소스를 확보하십시오.

 $stmt->close();
$mysqli->close();

8. 완전한 예

위의 단계를 통합하면 최종 완전 코드는 다음과 같습니다.

 <?php
$mysqli = new mysqli("localhost", "user", "password", "database");

if ($mysqli->connect_error) {
    die("연결이 실패했습니다: " . $mysqli->connect_error);
}

$query = "SELECT id, name, email FROM users WHERE active = ?";
$stmt = $mysqli->prepare($query);

$active = 1;
$stmt->bind_param("i", $active);

$stmt->execute();

$fields = $stmt->fetch_fields();
foreach ($fields as $field) {
    echo "필드 이름: " . $field->name . "<br>";
    echo "필드 유형: " . $field->type . "<br>";
}

$stmt->bind_result($id, $name, $email);
while ($stmt->fetch()) {
    echo "ID: $id, Name: $name, Email: $email<br>";
}

$stmt->close();
$mysqli->close();
?>