데이터베이스 개발에 PHP를 사용할 때 MySQLI 확장은 가장 일반적으로 사용되는 데이터베이스 작업 중 하나입니다. mysqli_result :: $ field_count 속성은 결과 세트에서 필드 수 (열) 수를 얻는 데 사용됩니다. 그러나 실제 개발에서 개발자는 mysqli_result :: $ field_count 가보고되는 오류 또는 정의되지 않은 상황에 직면 할 수 있습니다. 이 기사는이 문제의 일반적인 원인을 분석하고 해당 솔루션을 제공합니다.
개발자는 다음과 유사한 오류 프롬프트를 만날 수 있습니다.
Fatal error: Uncaught Error: Undefined property: mysqli_result::$field_count in ...
또는:
Trying to access array offset on value of type bool
이러한 오류 프롬프트는 Field_count 속성에 액세스하려고 할 때 MySQLI_RESULT 객체가 올바르게 반환되지 않으며 개체가 아닐 수도 있음을 나타냅니다.
SQL 쿼리 실행이 실패하면 mysqli :: query () 메소드는 mysqli_result 객체 대신 false를 반환합니다. 다음 코드가 결과 세트 객체로 기본값을 기본으로 표시하면 속성에 액세스 할 때 오류가 자연스럽게 발생합니다.
샘플 코드 :
$mysqli = new mysqli('localhost', 'root', '', 'test');
$result = $mysqli->query("SELECT * FROM non_existing_table");
echo $result->field_count; // 오류를보고하십시오:대상이 아닙니다
해결책:
Field_count 속성에 액세스하기 전에 먼저 쿼리가 성공했는지 확인하십시오.
if ($result instanceof mysqli_result) {
echo $result->field_count;
} else {
echo "쿼리가 실패했습니다:" . $mysqli->error;
}
삽입 , 업데이트 및 삭제 와 같은 일부 SQL 문은 결과 세트를 반환하지 않습니다. 현재 Query ()가 true를 반환하고 Field_count에도 액세스하면 오류가 발생합니다.
샘플 코드 :
$result = $mysqli->query("UPDATE users SET name = 'test' WHERE id = 1");
echo $result->field_count; // 오류를보고하십시오:대상이 아닙니다
해결책:
다양한 유형의 SQL 문을 구별하고 mysqli_result 객체를 반환하는 쿼리에 대해서만 Field_count를 사용하십시오.
$result = $mysqli->query("SELECT * FROM users");
if ($result instanceof mysqli_result) {
echo "열 수:" . $result->field_count;
} else {
echo "쿼리 결과 세트가 아닙니다,실행 상태:" . ($result ? '성공' : '실패하다');
}
일부 이전 버전의 PHP 또는 MySQLI 확장 기능이 올바르게 활성화되지 않으면 관련 속성을 사용할 수 없습니다.
해결책:
PHP 및 MySQLI 확장 버전을 확인하십시오.
phpinfo();
MySQLI 확장이 활성화되어 있는지 확인하고 PHP 버전은 7.4 이상이라는 것이 좋습니다.
Field_count 는 인스턴스 속성이며 정적 모드를 사용하여 잘못 액세스하면 정의되지 않거나 오류가 발생합니다.
Error example:
echo mysqli_result::$field_count; // 실수
올바른 방법 :
echo $result->field_count;
경우에 따라 개발자는 API에서 가져온 데이터와 같이 MySQLI_RESULT 로 외부 데이터를 잘못 구문 분석 할 수 있습니다.
$response = file_get_contents("https://gitbox.net/api/data");
$data = json_decode($response);
echo $data->field_count; // 실제로는 아닙니다 mysqli_result 물체
해결책:
올바른 유형 객체를 사용하고 있는지 확인하고 유형 판단을하십시오.
if ($data instanceof mysqli_result) {
echo $data->field_count;
} else {
echo "类型실수,액세스 할 수 없습니다 field_count";
}
코드의 견고성을 향상시키기 위해 쿼리 로직을 균일하게 캡슐화하는 것이 좋습니다.
function safe_query($mysqli, $sql) {
$result = $mysqli->query($sql);
if ($result instanceof mysqli_result) {
return $result;
} else {
error_log("SQL Error: " . $mysqli->error);
return false;
}
}
// 사용 방법
$result = safe_query($mysqli, "SELECT * FROM users");
if ($result) {
echo "열 수:" . $result->field_count;
}
mysqli_result :: $ field_count가 오류를보고하거나 정의되지 않은 이유는 개발자가 query () 의 반환 결과 유형을 올바르게 처리하지 않거나 사용 환경과 호출 방법이 불분명하기 때문에 종종 종종입니다. 위의 방법을 통해 개발자는 이러한 오류를 효과적으로 피하고보다 안전하고 강력한 PHP 데이터베이스 작업 코드를 작성할 수 있습니다.