>  기사  >  백엔드 개발  >  \"알 수 없는 테이블 상태: TABLE_TYPE\"을 반환하는 특정 쿼리를 실행할 때 PHP 스크립트가 파일을 생성하지 못하는 이유는 무엇입니까?

\"알 수 없는 테이블 상태: TABLE_TYPE\"을 반환하는 특정 쿼리를 실행할 때 PHP 스크립트가 파일을 생성하지 못하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-31 16:31:02471검색

Why does my PHP script fail to create a file when executing a specific query that returns

PHP 파일의 코드 일부를 실행할 수 없습니다

제공된 PHP 스크립트는 다음 페이지의 체크인 요청을 처리하는 기능을 합니다. Android 애플리케이션을 만들고 데이터베이스와 상호작용합니다. 그런데 프로그램에서 특정 코드 섹션을 실행할 수 없는 문제가 발생하여 'file4.txt'라는 파일이 생성되지 않았습니다.

문제 추적

개발자는 스크립트가 $query 쿼리 실행 시에만 파일 생성에 실패한 것을 확인했습니다. 추가 조사를 통해 쿼리를 실행하려고 할 때 MySQL이 "알 수 없는 테이블 상태: TABLE_TYPE" 메시지로 응답하는 것으로 나타났습니다. 기능이 때때로 올바르게 작동했지만 다른 기능은 작동하지 않았기 때문에 이 동작은 일관성이 없었습니다.

제안된 솔루션

이 문제를 해결하기 위해 개발자는 분할 및 정복 접근 방식을 제안했습니다. 함수를 더 작은 섹션으로 나누는 것입니다. 특히, 파일 쓰기 섹션을 별도의 기능으로 분리했습니다.

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

이를 통해 코드가 단순화되고 디버그가 더 쉬워졌습니다.

또한 개발자는 데이터베이스 작업을 다음으로 재구성할 것을 제안했습니다. MySql이라는 별도의 클래스입니다. 이는 오류 처리를 분리하고 데이터베이스에 연결하고 데이터를 검색하는 보다 효율적인 방법을 제공합니다.

<code class="php">class MySql
{
    // ... (Database connection and query methods) ...
}</code>

업데이트된 코드 예제

제안된 코드 결합 솔루션을 사용하면서 업데이트된 checkin() 기능이 훨씬 더 깔끔하고 유지 관리가 쉬워졌습니다.

<code class="php">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);
        }
    }
}</code>

MySql 클래스를 포함한 전체 코드 예제가 제공되어 더 많은 목표를 달성하기 위해 문제를 분할하고 해결하는 방법을 보여줍니다. 관리하기 쉽고 효율적인 솔루션입니다.

위 내용은 \"알 수 없는 테이블 상태: TABLE_TYPE\"을 반환하는 특정 쿼리를 실행할 때 PHP 스크립트가 파일을 생성하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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