현재 위치: > 최신 기사 목록> 결과 세트 구조를 얻기 위해 mysqli_stmt :: result_metadata에 대한 완전한 코드 예제가 있습니까? 그것을 쓰는 방법?

결과 세트 구조를 얻기 위해 mysqli_stmt :: result_metadata에 대한 완전한 코드 예제가 있습니까? 그것을 쓰는 방법?

gitbox 2025-06-08

php에서, mysqli_stmt :: result_metadata는 준비된 문에 해당하는 결과 세트의 메타 데이터 (즉, 필드 구조)를 얻는 데 일반적으로 사용되는 방법입니다. 이 방법은 쿼리 결과에 대한 열 정보를 동적으로 생성하고 바인딩 열과 같은 추가 작업을 수행하는 데 매우 유용합니다. 다음으로 MySQLI_STMT :: Result_Metadata를 사용하여 결과 세트 구조를 얻는 방법을 보여주는 완전한 코드 예제를 보여 드리겠습니다.

1. 데이터베이스에 연결하십시오

먼저 MySQLI를 통해 데이터베이스에 연결해야합니다. 이미 MySQL 데이터베이스가 있다고 가정합니다. 연결을위한 기본 코드는 다음과 같습니다.

 <?php
$host = 'localhost';
$username = 'root';
$password = 'password';
$dbname = 'test_database';

// 연결을 만듭니다
$conn = new mysqli($host, $username, $password, $dbname);

// 연결이 성공했는지 확인하십시오
if ($conn->connect_error) {
    die("연결이 실패했습니다: " . $conn->connect_error);
}
?>

2. SQL 쿼리를 준비하십시오

구조에 ID , 이름이메일 의 세 가지 필드가 포함 된 테이블 사용자가 있다고 가정 하고이 필드의 메타 데이터를 가져와야합니다. 먼저 쿼리 문을 준비하십시오.

 $sql = "SELECT id, name, email FROM users";
$stmt = $conn->prepare($sql);

if ($stmt === false) {
    die('MySQL prepare failed: ' . $conn->error);
}

3. 결과 세트 메타 데이터를 얻으십시오

우리는 mysqli_stmt :: result_metadata 메소드를 사용하여 결과 세트의 메타 데이터를 얻습니다. 이 메소드는 쿼리 결과의 필드 정보를 포함하는 MySQLI_RESULT 객체를 반환합니다. 다음으로, 우리는 현장 정보를 반복하고 각 필드의 이름을 출력합니다.

 $result_metadata = $stmt->result_metadata();

if ($result_metadata === false) {
    die('결과 세트 메타 데이터를 얻을 수 없습니다');
}

$columns = [];
while ($column = $result_metadata->fetch_field()) {
    $columns[] = $column->name;
}

echo "쿼리 결과의 필드 이름입니다:<br>";
foreach ($columns as $column_name) {
    echo $column_name . "<br>";
}

4. 열을 바인딩합니다

필드의 메타 데이터를 얻은 후 MySQLI_STMT :: BIND_RESULT 메소드를 사용하여 결과 세트에서 각 열을 PHP 변수에 바인딩 할 수 있습니다. 다음은 열을 바인딩하고 결과를 얻는 방법의 예입니다.

 // 바인드 열
$stmt->bind_result($id, $name, $email);

// 쿼리를 실행하십시오
$stmt->execute();

// 결과를 얻으십시오
while ($stmt->fetch()) {
    echo "ID: $id, Name: $name, Email: $email <br>";
}

// 가까운 진술
$stmt->close();

5. 완전한 예

다음은 위의 부분을 함께 제공하는 완전한 코드 예제입니다.

 <?php
$host = 'localhost';
$username = 'root';
$password = 'password';
$dbname = 'test_database';

// 연결을 만듭니다
$conn = new mysqli($host, $username, $password, $dbname);

// 연결이 성공했는지 확인하십시오
if ($conn->connect_error) {
    die("연결이 실패했습니다: " . $conn->connect_error);
}

$sql = "SELECT id, name, email FROM users";
$stmt = $conn->prepare($sql);

if ($stmt === false) {
    die('MySQL prepare failed: ' . $conn->error);
}

// 결과를 얻으십시오集元数据
$result_metadata = $stmt->result_metadata();

if ($result_metadata === false) {
    die('결과 세트 메타 데이터를 얻을 수 없습니다');
}

$columns = [];
while ($column = $result_metadata->fetch_field()) {
    $columns[] = $column->name;
}

echo "쿼리 결과의 필드 이름입니다:<br>";
foreach ($columns as $column_name) {
    echo $column_name . "<br>";
}

// 바인드 열
$stmt->bind_result($id, $name, $email);

// 쿼리를 실행하십시오
$stmt->execute();

// 결과를 얻으십시오
while ($stmt->fetch()) {
    echo "ID: $id, Name: $name, Email: $email <br>";
}

// 가까운 진술
$stmt->close();

// 연결을 닫으십시오
$conn->close();
?>

6. 요약

mysqli_stmt :: result_metadata를 사용하여 준비된 명령문 쿼리의 결과 세트 구조를 쉽게 얻으십시오. 필드 정보를 얻은 후 필요에 따라 열을 동적으로 바인딩하고 쿼리 결과를 추출 할 수 있습니다. 이것은 복잡한 쿼리를 처리하고 동적 페이지를 생성 할 때 매우 유용합니다.