제공된 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!