Maison >base de données >tutoriel mysql >Pourquoi ma fonction PHP ne parvient-elle pas à exécuter une section de code spécifique, entraînant des erreurs « état de table inconnu : TABLE_TYPE » ?

Pourquoi ma fonction PHP ne parvient-elle pas à exécuter une section de code spécifique, entraînant des erreurs « état de table inconnu : TABLE_TYPE » ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-29 16:01:11313parcourir

Why Does My PHP Function Fail to Execute a Specific Code Section, Leading to

La fonction PHP a du mal à s'exécuter partiellement

Problème :

Une fonction PHP responsable de la gestion Les requêtes du serveur rencontrent un problème où elles ne parviennent pas à saisir une région de code spécifique. La fonction commence par établir une connexion à la base de données et écrire des données dans des fichiers. Les requêtes suivantes tentent de récupérer des données mais génèrent l'erreur « Statut de table inconnu : TABLE_TYPE ».

Solution :

Refactorisation du code et abstraction de la base de données :

Pour réduire la complexité du code et améliorer la gestion des erreurs, le code original est refactorisé. Premièrement, une fonction distincte est créée pour l'écriture de fichiers, simplifiant ainsi les opérations sur les fichiers.

Deuxièmement, la connexion à la base de données et les requêtes sont résumées dans une classe MySQL distincte. Cela permet un accès plus flexible à la base de données et une gestion des erreurs en dehors de la fonction principale.

Exemple :

Fonction d'écriture de fichiers :

function file_put($number, $data)
{
    $path = sprintf("C:/temp/wamp/www/file%d.txt", $number);
    file_put_contents($path, $data);
}

Base de données Classe :

class MySql
{
    // Properties for database connection
    // ...

    // Database connection method
    private function connect($server, $name, $password)
    {
        // Connect and error handling
    }

    // Database query method
    public function query($query)
    {
        // Establish connection if not already done
        // Execute query and return result
    }
}

Fonction d'enregistrement révisée :

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);
        }
    }
}

En implémentant la refactorisation du code et l'abstraction de la base de données, la fonction d'origine est simplifiée, la gestion des erreurs est amélioré et la capacité d'exécuter toutes les régions de code est restaurée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn