>데이터 베이스 >MySQL 튜토리얼 >내 PHP 함수가 특정 코드 섹션을 실행하지 못해 '알 수 없는 테이블 상태: TABLE_TYPE' 오류가 발생하는 이유는 무엇입니까?

내 PHP 함수가 특정 코드 섹션을 실행하지 못해 '알 수 없는 테이블 상태: TABLE_TYPE' 오류가 발생하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-29 16:01:11327검색

Why Does My PHP Function Fail to Execute a Specific Code Section, Leading to

PHP 함수가 부분적으로 실행하기 어려움

문제:

처리를 담당하는 PHP 함수 서버 요청에서 특정 코드 영역을 입력하지 못하는 문제가 발생합니다. 이 기능은 데이터베이스 연결을 설정하고 파일에 데이터를 쓰는 것으로 시작됩니다. 후속 쿼리에서 데이터 검색을 시도하지만 "알 수 없는 테이블 상태: TABLE_TYPE" 오류가 발생합니다.

해결책:

코드 리팩토링 및 데이터베이스 추상화:

코드 복잡성을 줄이고 오류 처리를 개선하기 위해 원본 코드를 리팩터링했습니다. 첫째, 파일 쓰기를 위한 별도의 기능이 생성되어 파일 작업이 단순화됩니다.

둘째, 데이터베이스 연결 및 쿼리가 별도의 MySQL 클래스로 추상화됩니다. 이를 통해 주 기능 외부에서 보다 유연한 데이터베이스 액세스 및 오류 처리가 가능해집니다.

예:

파일 쓰기 기능:

function file_put($number, $data)
{
    $path = sprintf("C:/temp/wamp/www/file%d.txt", $number);
    file_put_contents($path, $data);
}

데이터베이스 클래스:

class MySql
{
    // Properties for database connection
    // ...

    // Database connection method
    private function connect($server, $name, $password)
    {
        // Connect and error handling
    }

    // Database query method
    public function query($query)
    {
        // Establish connection if not already done
        // Execute query and return result
    }
}

수정된 체크인 기능:

function checkin(MySql $DB, $TechID, $ClientID, $SiteID)
{
    $query = sprintf(
        "SELECT `Type` FROM `Log` WHERE `TechID` = '%d' ORDER BY LogTime DESC LIMIT 1",
        $TechID
    );
    file_put(5, $query);

    $result1 = $DB->query("SELECT COUNT(*) FROM Log");
    $result2 = $DB->query($query);

    foreach ($result1 as $row1) {
        list($count) = $row1;
        $data = "ClientID:$ClientID TechID:$TechID SiteID:$SiteID Count:$count";
        file_put(3, $data);
        foreach ($result2 as $row2) {
            file_put(4, $data);
        }
    }
}

코드 리팩토링 및 데이터베이스 추상화를 구현하여 원래 기능이 단순화되고 오류 처리가 개선되었으며 모든 코드 영역 실행 기능이 복원되었습니다.

위 내용은 내 PHP 함수가 특정 코드 섹션을 실행하지 못해 '알 수 없는 테이블 상태: TABLE_TYPE' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.