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 関数が特定のコード セクションの実行に失敗し、「unknown table status: TABLE_TYPE」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。