Aktueller Standort: Startseite> Neueste Artikel> So erfassen Sie MySQLI_STMT :: $ Fehlerinformationen im PHP -Unit -Test

So erfassen Sie MySQLI_STMT :: $ Fehlerinformationen im PHP -Unit -Test

gitbox 2025-05-28

In der PHP -Entwicklung, insbesondere bei der Behandlung von Datenbankvorgängen, ist es entscheidend, Fehlerinformationen zu erfassen und zu verarbeiten. Vor allem, wenn wir die MySQL -Datenbank verwenden, ist MySQLI_STMT :: $ ERROR eine Eigenschaft, mit der SQL -Abfragefehler erhalten werden. Es kann Entwicklern helfen, Probleme rechtzeitig zu entdecken und zu lösen. In einer Umgebung mit Unit -Tests können wir sie auch zur Erfassung und Prozessfehlerinformationen verwenden, wodurch die Debugging- und Optimierungseffizienz von Datenbankvorgängen verbessert wird.

In diesem Artikel wird vorgestellt, wie Sie MySQLI_STMT :: $ -Fehlerfehlermeldung in PHP -Unit -Tests erfassen und Ihnen einige Debugging -Tipps zur Verfügung stellen.

1. Verwenden Sie MySQLI_STMT :: $ Fehler in Unit -Tests

Zunächst müssen wir eine Datenbankverbindung erstellen und eine SQL -Abfrage ausführen. Bei der Ausführung von Datenbankvorgängen speichert MySQLI_STMT :: $ ERROR die Fehlermeldung. Hier ist ein einfaches Beispiel, das zeigt, wie man MySQLI_STMT :: $ ERROR erfasst und umgeht.

 <?php
// Angenommen, wir haben a festgelegtMySQLiverbinden
$mysqli = new mysqli("localhost", "user", "password", "database");

// 检查verbinden是否成功
if ($mysqli->connect_error) {
    die("verbinden失败: " . $mysqli->connect_error);
}

// VorbereitenSQLAbfrageanweisung
$sql = "SELECT * FROM nonexistent_table"; // Absichtlich falsche Anfrage

// Vorverarbeitungsaussagen
$stmt = $mysqli->prepare($sql);

if ($stmt === false) {
    // Wenn die Vorverarbeitung fehlschlägt,Fehler fangen
    echo "Vorverarbeitungsaussagen错误: " . $mysqli->error;
} else {
    // Eine Frage ausführen
    $stmt->execute();

    // Überprüfen Sie die Ausführungsergebnisse
    if ($stmt->errno) {
        // Erfassungs- und Ausgabefehlermeldungen
        echo "Ausführungsfehler: " . $stmt->error;
    } else {
        echo "Abfrage erfolgreich";
    }
}

// 关闭verbinden
$stmt->close();
$mysqli->close();
?>

In diesem Beispiel haben wir absichtlich einen nicht vorhandenen Tabellennamen verwendet, der nicht vorhanden ist, was dazu führen würde, dass die Abfrage fehlschlägt. Durch Überprüfen von MySQLI_STMT :: $ ERROR UND MYSQLI_STMT :: $ ERRNO können wir die Fehlermeldung erfassen und sie debuggen.

2. Fehleraufnahme in Unit -Tests

In einer Umgebung mit Unit -Tests können wir das Phpunit -Framework zum Testen verwenden. Um die MySQLI_STMT :: $ -Fehlerfehlermeldung zu erfassen, können wir die Assertions -Methode von PHPUnit verwenden. Hier ist ein Basic Unit -Testbeispiel:

 <?php
use PHPUnit\Framework\TestCase;

class DatabaseTest extends TestCase
{
    private $mysqli;

    protected function setUp(): void
    {
        // 设置数据库verbinden
        $this->mysqli = new mysqli("localhost", "user", "password", "database");
    }

    public function testQueryExecutionError()
    {
        // Absichtlich eine falsche Abfrage schreiben
        $sql = "SELECT * FROM nonexistent_table";
        $stmt = $this->mysqli->prepare($sql);

        // 确保Vorverarbeitungsaussagen没有错误
        $this->assertFalse($stmt === false, "Vorverarbeitungsaussagen失败: " . $this->mysqli->error);

        // Eine Frage ausführen
        $stmt->execute();

        // Überprüfen Sie, ob die Ausführung erfolgreich ist
        $this->assertEquals(0, $stmt->errno, "Abfrageausführung fehlgeschlagen: " . $stmt->error);
    }

    protected function tearDown(): void
    {
        // 关闭数据库verbinden
        $this->mysqli->close();
    }
}
?>

In diesem Unit -Test haben wir absichtlich eine falsche Abfrage verwendet, um einen fehlgeschlagenen Datenbankvorgang zu simulieren. Die $ this-> assertFalse und $ this-> assertequals -Methoden werden verwendet, um zu überprüfen, ob die SQL-Abfrage erfolgreich ausgeführt wird. Wenn ein Fehler auftritt, geben wir die entsprechende Fehlermeldung aus, um uns zu debuggen.

3.. Erfassungsfehlermeldungen und Protokollprotokolle erfassen

Zusätzlich zur direkten Ausgabe von Fehlerinformationen können wir in der Produktionsumgebung auch Fehlerinformationen im Protokoll für die spätere Anzeige aufzeichnen. Das folgende Beispiel zeigt, wie mySQLI_STMT :: $ Fehlerinformationen in eine Protokolldatei protokolliert werden.

 <?php
// Angenommen, wir haben a festgelegtMySQLiverbinden
$mysqli = new mysqli("localhost", "user", "password", "database");

if ($mysqli->connect_error) {
    die("verbinden失败: " . $mysqli->connect_error);
}

$sql = "SELECT * FROM nonexistent_table";
$stmt = $mysqli->prepare($sql);

if ($stmt === false) {
    error_log("Vorverarbeitungsaussagen错误: " . $mysqli->error, 3, "/var/log/mysql_errors.log");
} else {
    $stmt->execute();

    if ($stmt->errno) {
        error_log("Ausführungsfehler: " . $stmt->error, 3, "/var/log/mysql_errors.log");
    }
}

$stmt->close();
$mysqli->close();
?>

In diesem Beispiel wird die Funktion "ERROR_LOG" verwendet, um Fehlerinformationen in die Datei /var/log/mysql_errors.log zu protokollieren. Auf diese Weise können wir sicherstellen, dass Fehlerinformationen nicht verloren gehen und dass nach der Analyse bequem ausgeführt werden kann.

Zusammenfassen

Durch Erfassen und Handhabungsfehlermeldungen mithilfe von MySQLI_STMT :: $ ERROR können Entwickler die Datenbankvorgänge leichter debuggen und optimieren. Bei PHP -Unit -Tests können wir das Phpunit -Framework verwenden, um Fehler zu fangen und Behauptungen zu machen, um die Robustheit unseres Codes weiter zu verbessern. Darüber hinaus ist die Protokollierung auch eine gute Praxis, die uns helfen kann, potenzielle Probleme zu verfolgen und zu lösen.

Wenn Sie über PHP robusteren Datenbankoperationscode schreiben möchten, lernen Sie diese Tipps unbedingt kennen!