提供的 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中文网其他相关文章!