MySQL 데이터베이스를 사용할 때 PHP는 데이터베이스와 상호 작용하기 위해 강력한 MySQLI 확장 기능을 제공합니다. 일반적인 작업은 mysqli_query ()를 사용하여 쿼리를 실행하고 결과를 얻는 것입니다. 일반적으로 쿼리 결과 세트는 mysqli_result 객체를 통해 액세스됩니다. 결과 세트를 처리 할 때 숫자, 문자열, 날짜 등과 같은 다른 유형의 데이터가 발생할 수 있습니다. 데이터 유형 오류를 피하려면 데이터를 가져올 때 유형 캐스팅 메커니즘을 추가해야 할 수 있습니다.
이 기사는 MySQLI_Result 함수의 결과 세트에 유형 캐스트 메커니즘을 추가하는 방법을 소개하여 각 필드가 예상 데이터 유형에 따라 처리되도록합니다.
먼저, mysqli_query () 함수를 사용하여 SQL 쿼리를 실행하고 mysqli_result 객체를 얻는 방법을 검토 해 봅시다.
<?php
// 데이터베이스 연결을 만듭니다
$mysqli = new mysqli('localhost', 'username', 'password', 'database_name');
// 연결이 성공했는지 확인하십시오
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
// 쿼리를 실행하고 결과 세트를 가져옵니다
$query = "SELECT id, name, price, created_at FROM products";
$result = $mysqli->query($query);
// 쿼리가 성공했는지 확인하십시오
if ($result) {
// 프로세스 쿼리 결과
while ($row = $result->fetch_assoc()) {
// 각 데이터 행을 처리합니다
}
} else {
echo "쿼리가 실패했습니다: " . $mysqli->error;
}
// 연결을 닫으십시오
$mysqli->close();
?>
이 예에서는 mysqli_query () 함수를 통해 SQL 쿼리를 실행하고 mysqli_result 객체를 반환합니다. 다음으로, 우리는 객체에서 작동하고 데이터를 읽습니다.
mysqli_result 의 fetch_assoc () 함수는 필드의 실제 유형이 정수 또는 부동 번호 일 수있는 경우에도 기본적으로 데이터를 기본적으로 문자열로 반환합니다. 이를 위해서는 쿼리 결과를 처리 할 때 데이터가 예상 유형을 충족하는지 확인할 때 수동으로 유형 캐스팅을 수행해야합니다.
필드가 정수 유형 인 경우 (int) 캐스팅으로 정수로 변환 할 수 있습니다.
<?php
while ($row = $result->fetch_assoc()) {
$id = (int) $row['id']; // 정수에 캐스트
echo "Product ID: " . $id . "<br>";
}
?>
필드가 플로팅 숫자 유형 인 경우 (float) 또는 (Double) Cast로 플로팅 유형으로 변환 할 수 있습니다.
<?php
while ($row = $result->fetch_assoc()) {
$price = (float) $row['price']; // 부동 번호로 캐스트
echo "Product Price: " . $price . "<br>";
}
?>
부울 필드의 경우 True 또는 False 로 변환 할 수 있습니다.
<?php
while ($row = $result->fetch_assoc()) {
$is_active = (bool) $row['is_active']; // 부울 유형으로 캐스트
echo "Product Active: " . ($is_active ? 'Yes' : 'No') . "<br>";
}
?>
필드가 날짜 유형 인 경우 DateTime :: CreateFromFormat () 메소드를 사용하여 날짜 개체로 변환하거나 strtotime ()을 직접 사용하여 타임 스탬프로 변환 할 수 있습니다.
<?php
while ($row = $result->fetch_assoc()) {
$created_at = strtotime($row['created_at']); // 타임 스탬프로 변환하십시오
echo "Created At: " . date('Y-m-d H:i:s', $created_at) . "<br>";
}
?>
입력 해야하는 여러 필드가있는 경우 사용자 정의 기능 및 배치 프로세스 유형 변환을 캡슐화 할 수 있습니다. 이는 코드의 유지 관리 및 재사성을 향상시킬 수 있습니다.
<?php
function convert_types($row) {
$row['id'] = (int) $row['id'];
$row['price'] = (float) $row['price'];
$row['is_active'] = (bool) $row['is_active'];
$row['created_at'] = strtotime($row['created_at']); // 타임 스탬프로 변환하십시오
return $row;
}
while ($row = $result->fetch_assoc()) {
$row = convert_types($row);
echo "Product ID: " . $row['id'] . "<br>";
echo "Product Price: " . $row['price'] . "<br>";
echo "Product Active: " . ($row['is_active'] ? 'Yes' : 'No') . "<br>";
echo "Created At: " . date('Y-m-d H:i:s', $row['created_at']) . "<br>";
}
?>
이 예에서 Convert_Types () 함수는 각 행의 데이터를 예상 유형으로 변환하여 쉽게 표시하거나 다른 작업을 할 수 있습니다.
MySQLI_Result 결과 세트에 유형 캐스트 메커니즘을 추가하면 데이터 유형을 더 잘 제어하고 유형 불일치로 인한 오류를 피할 수 있습니다. 데이터를 정수, 부동 소수, 부울 또는 날짜 유형으로 변환하든 캐스팅은 데이터의 정확성과 일관성을 보장합니다. 전환 함수를 캡슐화함으로써 코드를보다 간결하고 유지 관리 할 수 있습니다.
MySQL 쿼리 결과를 처리 할 때이 기사가 도움이되기를 바랍니다.