問題:
PHP スクリプトで、特定のコード セクションの前で実行が停止します。コードのセクション、特にファイル (file4.txt) が作成される場所。この現象は、スクリプトのデバッグ中に発生します。
考えられる原因:
エラー メッセージ「unknown table status: TABLE_TYPE」は、データベース クエリの問題を示唆しています。これは、データベース接続が適切に確立されていない場合、または参照されるテーブルが存在しないかアクセスできない場合に発生する可能性があります。
解決策:
この問題に対処するには、次のようにします。次の手順を検討してください。
1.分割統治:
スクリプトを小さなセクションに分割して、問題のあるセグメントを特定します。
2.ファイル操作ユーティリティ:
ファイル操作を処理する別の関数 (例: file_put) を作成し、変更とデバッグを容易にします。
3.データベース管理の改善:
MySQL 関連の操作を別のクラスに移動して、複雑さを抽象化します。これにより、可読性とエラー処理が向上します。
4.包括的なエラー処理:
エラー メッセージが明確にキャプチャおよび表示されていることを確認し、問題の原因についての洞察を提供します。
5.簡略化されたデータベース クエリ:
「ログ」テーブルからデータをフェッチした複雑なクエリを、よりシンプルで直接的なステートメントとして書き直します。
詳細なデモ:
次のコードは、元のコードの改良版ですスクリプト:
// MySQL Exception class class MySqlException extends RuntimeException {} // MySQL Database class class MySql { ... } // MySql Result Set - Array Based class class MySqlResult implements Iterator, Countable { ... } // File manipulation function function file_put($number, $data) { ... } // Simplified checkin function function checkin(MySql $DB, $TechID, $ClientID, $SiteID) { $result1 = $DB->query("SELECT COUNT(*) FROM Log"); foreach ($result1 as $row1) { $count = $row1['COUNT(*)']; $file3 = "C:/wamp/www/file3.txt"; file_put_contents($file3, "ClientID:$ClientID TechID:$TechID SiteID:$SiteID Count:$count"); } } // Create database object and connect $config = [ ... ]; $db = new MySql($config); // Execute checkin function checkin($db, 1, 2, 3, 4);
以上がfile4.txt を作成する前に PHP スクリプトが停止するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。