「不明なテーブルのステータス: TABLE_TYPE」を返す特定のクエリを実行すると、PHP スクリプトがファイルの作成に失敗するのはなぜですか?

Susan Sarandon
リリース: 2024-10-31 16:31:02
オリジナル
470 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!