PHP에서는 확장자를 사용하여 데이터베이스를 작동 할 때 쿼리 결과 자체를 얻을뿐만 아니라 필드 이름, 유형, 길이 등과 같은 쿼리 필드의 세부 사항을 이해해야합니다.이 정보를 필드의 메타 데이터 라고합니다.
이 기사에서는 특정 예제를 사용하여 MySQLI :: STMT_INIT를 사용하여 ready () 및 result_metadata () 메소드를 결합하여 데이터베이스 필드의 메타 데이터를 얻는 방법을 설명합니다.
먼저 MySQLI 클래스를 사용하여 데이터베이스에 연결해야합니다.
<?php
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
if ($mysqli->connect_errno) {
die('연결이 실패했습니다: ' . $mysqli->connect_error);
}
?>
다음으로 stmt_init ()를 사용하여 mysqli_stmt 객체를 초기화하고 read () 메소드를 사용하여 SQL 쿼리 문을 준비합니다.
<?php
$stmt = $mysqli->stmt_init();
if (!$stmt->prepare('SELECT id, name, email FROM users WHERE status = ?')) {
die('전처리가 실패했습니다: ' . $stmt->error);
}
?>
상태 = 'Active' 로 사용자를 쿼리하고 싶다고 가정합니다.
<?php
$status = 'active';
$stmt->bind_param('s', $status);
if (!$stmt->execute()) {
die('실행 실패: ' . $stmt->error);
}
?>
이제 요점이 여기에 있습니다 - Query 결과의 필드 메타 데이터를 얻기 위해 result_metadata () 메소드를 호출합니다.
<?php
$metadata = $stmt->result_metadata();
if ($metadata) {
while ($field = $metadata->fetch_field()) {
echo "필드 이름: " . $field->name . "<br>";
echo "필드 유형: " . $field->type . "<br>";
echo "최대 길이: " . $field->max_length . "<br>";
echo "<hr>";
}
$metadata->free();
} else {
echo "메타 데이터를 사용할 수 없습니다。";
}
?>
여기에서 fetch_field ()는 필드 세부 사항이 포함 된 객체를 반환하며 일반적인 속성에는 다음이 포함됩니다.
이름 → 필드 이름
유형 → 필드 유형 (숫자 코드, 매뉴얼 비교가 필요합니다)
max_length → 필드 최대 길이 (참고 : 결과 세트에만 유효합니다)
마지막으로 문장을 해제하고 데이터베이스 연결을 닫는 것을 잊지 마십시오.
<?php
$stmt->close();
$mysqli->close();
?>
쿼리가 3 개의 필드 ID , 이름 및 이메일을 반환한다고 가정하면 출력은 다음과 같습니다.
필드 이름: id
필드 유형: 3
최대 길이: 0
-----------------------
필드 이름: name
필드 유형: 253
최대 길이: 0
-----------------------
필드 이름: email
필드 유형: 253
최대 길이: 0
필드 유형 의 숫자 값은 MySQL 매뉴얼의 유형 상수 를 참조해야 합니다 .