提供的 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 類,示範如何分治問題以實現更高效的解決方案可管理且高效的解決方案。
以上是為什麼我的 PHP 腳本在執行返回「未知表狀態:TABLE_TYPE」的特定查詢時無法建立檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!