ホームページ > データベース > mysql チュートリアル > PHP 関数が特定のコード セクションの実行に失敗し、「unknown table status: TABLE_TYPE」エラーが発生するのはなぜですか?

PHP 関数が特定のコード セクションの実行に失敗し、「unknown table status: TABLE_TYPE」エラーが発生するのはなぜですか?

Susan Sarandon
リリース: 2024-11-29 16:01:11
オリジナル
326 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート