php에서, mysqli_stmt :: result_metadata는 준비된 문에 해당하는 결과 세트의 메타 데이터 (즉, 필드 구조)를 얻는 데 일반적으로 사용되는 방법입니다. 이 방법은 쿼리 결과에 대한 열 정보를 동적으로 생성하고 바인딩 열과 같은 추가 작업을 수행하는 데 매우 유용합니다. 다음으로 MySQLI_STMT :: Result_Metadata를 사용하여 결과 세트 구조를 얻는 방법을 보여주는 완전한 코드 예제를 보여 드리겠습니다.
먼저 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);
}
?>
구조에 ID , 이름 및 이메일 의 세 가지 필드가 포함 된 테이블 사용자가 있다고 가정 하고이 필드의 메타 데이터를 가져와야합니다. 먼저 쿼리 문을 준비하십시오.
$sql = "SELECT id, name, email FROM users";
$stmt = $conn->prepare($sql);
if ($stmt === false) {
die('MySQL prepare failed: ' . $conn->error);
}
우리는 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>";
}
필드의 메타 데이터를 얻은 후 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();
다음은 위의 부분을 함께 제공하는 완전한 코드 예제입니다.
<?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();
?>
mysqli_stmt :: result_metadata를 사용하여 준비된 명령문 쿼리의 결과 세트 구조를 쉽게 얻으십시오. 필드 정보를 얻은 후 필요에 따라 열을 동적으로 바인딩하고 쿼리 결과를 추출 할 수 있습니다. 이것은 복잡한 쿼리를 처리하고 동적 페이지를 생성 할 때 매우 유용합니다.