Heim >Backend-Entwicklung >PHP-Tutorial >Warum kann mein PHP-Skript keine Datei erstellen, wenn eine bestimmte Abfrage ausgeführt wird, die „unbekannten Tabellenstatus: TABLE_TYPE' zurückgibt?
Das bereitgestellte PHP-Skript dient als Funktion zur Bearbeitung von Check-in-Anfragen von eine Android-Anwendung und interagiert mit einer Datenbank. Allerdings ist das Programm auf ein Problem gestoßen, bei dem es einen bestimmten Codeabschnitt nicht ausführen konnte, was es daran hinderte, eine Datei mit dem Namen „file4.txt“ zu erstellen.
Der Entwickler hat festgestellt, dass das Skript nur beim Ausführen der Abfrage $query die Datei nicht erstellen konnte. Bei weiteren Untersuchungen wurde festgestellt, dass MySQL beim Versuch, die Abfrage auszuführen, mit der Meldung „Unbekannter Tabellenstatus: TABLE_TYPE“ antwortete. Dieses Verhalten war inkonsistent, da die Funktion manchmal ordnungsgemäß funktionierte, andere jedoch nicht.
Um dieses Problem zu beheben, schlug der Entwickler einen „Teile-und-herrsche“-Ansatz vor indem die Funktion in kleinere Abschnitte unterteilt wird. Insbesondere wurde der Abschnitt zum Schreiben von Dateien in eine separate Funktion ausgegliedert:
<code class="php">function file_put($number, $data) { $path = sprintf("C:/temp/wamp/www/file%d.txt", $number); file_put_contents($path, $data); }</code>
Dies vereinfachte den Code und erleichterte das Debuggen.
Darüber hinaus schlug der Entwickler vor, die Datenbankoperationen neu zu organisieren eine separate Klasse namens MySql. Dies würde die Fehlerbehandlung isolieren und eine effizientere Möglichkeit bieten, eine Verbindung zur Datenbank herzustellen und Daten abzurufen:
<code class="php">class MySql { // ... (Database connection and query methods) ... }</code>
Kombination der vorgeschlagenen Lösungen wurde die aktualisierte checkin()-Funktion viel sauberer und einfacher zu warten:
<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>
Das vollständige Codebeispiel, einschließlich der MySql-Klasse, wurde bereitgestellt und zeigt, wie man das Problem aufteilt und erobert, um mehr zu erreichen überschaubare und effiziente Lösung.
Das obige ist der detaillierte Inhalt vonWarum kann mein PHP-Skript keine Datei erstellen, wenn eine bestimmte Abfrage ausgeführt wird, die „unbekannten Tabellenstatus: TABLE_TYPE' zurückgibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!