首頁 > 後端開發 > php教程 > 為什麼我的 PHP 腳本在執行返回「未知表狀態:TABLE_TYPE」的特定查詢時無法建立檔案?

為什麼我的 PHP 腳本在執行返回「未知表狀態:TABLE_TYPE」的特定查詢時無法建立檔案?

Susan Sarandon
發布: 2024-10-31 16:31:02
原創
600 人瀏覽過

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 類,示範如何分治問題以實現更高效的解決方案可管理且高效的解決方案。

以上是為什麼我的 PHP 腳本在執行返回「未知表狀態:TABLE_TYPE」的特定查詢時無法建立檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板