Aktueller Standort: Startseite> Neueste Artikel> Wie gibt ich detaillierte Debugging -Informationen in Kombination mit MySQLI :: Debug und IRREL_LOG aus?

Wie gibt ich detaillierte Debugging -Informationen in Kombination mit MySQLI :: Debug und IRREL_LOG aus?

gitbox 2025-09-15

Wie gibt ich detaillierte Debugging -Informationen in Kombination mit MySQLI :: Debug und IRREL_LOG aus?

Bei der Entwicklung von PHP -Projekten sind Datenbankvorgänge häufig am anfälligsten für Fehler. Um Probleme schnell zu finden, sind detaillierte Debugging -Informationen unverzichtbar. Die MySQLI -Erweiterung von PHP bietet einige nützliche Debugging -Funktionen, insbesondere die MySQLI :: Debug -Methode, mit der Entwickler die Debugging -Informationen von MySQL erhalten können. In der Zwischenzeit ist die Funktion "ERROR_LOG" ein leistungsstarkes Tool zum Schreiben von Fehlerprotokollen in Dateien, Systemprotokolle oder Senden an E -Mails. Mit diesen beiden können Entwickler eine umfassendere und intuitivere Datenbankdebug -Protokollausgabe erzielen.

1. Einführung in MySQLI :: Debugg

MySQLI :: Debug ist eine Methode in der MySQLI -Klasse, die die zugrunde liegenden Debugging -Informationen der MySQL -Datenbank ausgeben kann. Mit dieser Methode können Entwickler die ausgeführten SQL -Abfragen, Verbindungsinformationen und den Status des MySQL -Servers anzeigen. Dies ist sehr hilfreich, um die Ausführung von SQL -Abfragen zu debuggen.

Die Verwendung von MySQLI :: Debugg ist sehr einfach. Sie müssen es nur an der richtigen Stelle anrufen. Hier ist ein einfaches Beispiel für die Nutzung:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-comment">// Schalten Sie den Debug -Modus ein</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">debug</span></span><span>(</span><span><span class="hljs-string">"d:t"</span></span><span>); </span><span><span class="hljs-comment">// 'd' Zeigt Debugging -Informationen an,'t' Zeigt die Verfolgungsinformationen an</span></span><span>

</span><span><span class="hljs-comment">// implementieren SQL Abfrage</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM users"</span></span><span>);

</span><span><span class="hljs-comment">// 检查Abfrage结果</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span>) {
    </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">fetch_assoc</span></span><span>()) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"User: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>] . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
    }
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Query failed: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;error;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

In diesem Beispiel ermöglicht $ MySQLi-> Debug ("D: T") Debug-Informationsausgabe. Diese Informationen werden direkt an den Browser oder Terminal ausgegeben, um Entwicklern zu helfen, die Ausführungsdetails von MySQL -Abfragen zu verstehen.

2. Einführung in ERROR_LOG

ERROR_LOG ist eine integrierte Funktion in PHP, mit der Fehlermeldungen an Systemprotokolle senden, Dateien angeben oder an Administratoren senden können. Diese Funktion ist sehr nützlich, was den Entwicklern dabei helfen kann, Fehlerinformationen aufzuzeichnen und festzulegen, wo das Protokoll bei Bedarf speichert werden.

Der grundlegende Fehler_Log wird wie folgt verwendet:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Protokoll -Fehlerinformationen in der angegebenen Datei</span></span><span>
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Database query failed: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;error, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">"/path/to/your/logfile.log"</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

In diesem Beispiel wendet ERROR_LOG die Fehlermeldung an die angegebene Protokolldatei an.

3. Verwenden Sie MySQLI :: Debug und error_log in Kombination

Obwohl MySQLI :: Debuggen detaillierte Datenbankdebugging -Informationen ausgeben kann, ist es möglicherweise nicht immer ideal, diese Informationen direkt in den Browser auszugeben, insbesondere in Produktionsumgebungen. Daher ist es eine bessere Praxis, diese Informationen gleichzeitig in eine Protokolldatei auszugeben, um die nachfolgende Analyse zu speichern.

Es kann MySQLI :: Debug und ERROR_LOG kombinieren, um eine flexiblere Debug -Ausgabe zu erzielen. Hier ist ein praktisches Beispiel:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Stellen Sie die Debug -Ausgabe auf Protokolldatei fest</span></span><span>
</span><span><span class="hljs-variable">$logFile</span></span><span> = </span><span><span class="hljs-string">'/path/to/your/logfile.log'</span></span><span>;
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-comment">// Schalten Sie den Debug -Modus ein</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">debug</span></span><span>(</span><span><span class="hljs-string">"d:t"</span></span><span>);

</span><span><span class="hljs-comment">// Debug -Informationen zum Protokollieren von Dateien aufnehmen</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// Ausgangspufferung einschalten</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">debug</span></span><span>(</span><span><span class="hljs-string">"d:t"</span></span><span>);
</span><span><span class="hljs-variable">$debugOutput</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_clean</span></span><span>();

</span><span><span class="hljs-comment">// Ausgabe von Debug -Informationen in die angegebene Protokolldatei</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$debugOutput</span></span><span>)) {
    </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"MySQL Debug Output: "</span></span><span> . </span><span><span class="hljs-variable">$debugOutput</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-variable">$logFile</span></span><span>);
}

</span><span><span class="hljs-comment">// implementieren SQL Abfrage</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM users"</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span>) {
    </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">fetch_assoc</span></span><span>()) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"User: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>] . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
    }
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-variable">$errorMsg</span></span><span> = </span><span><span class="hljs-string">"Query failed: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;error;
    </span><span><span class="hljs-comment">// Aufzeichnen SQL Fehlermeldung zur Protokolldatei</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-variable">$errorMsg</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-variable">$logFile</span></span><span>);
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$errorMsg</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Im obigen Code aktivieren wir zunächst Debug -Informationen über MySQLI :: Debuggen und erfassen diese Informationen mit OB_Start und ob_get_clean . Anschließend wird die Debug -Ausgabe über ERROR_LOG in die angegebene Protokolldatei angemeldet. Nachdem die SQL -Abfrage ausgeführt wurde, werden wir, wenn die Abfrage fehlschlägt, auch Fehlermeldungen in derselben Protokolldatei protokolliert.

4. Die Protokollierung optimieren

In einer Produktionsumgebung können übermäßige Debugging -Informationen in Protokolldateien schnell groß werden, was sich auf die Systemleistung auswirkt. Daher können wir die Debug -Produktion flexibel an die Umweltbedingungen (wie Entwicklungsumgebung und Produktionsumgebung) anpassen.

Schalten Sie beispielsweise detaillierte Debugging -Informationen in der Entwicklungsumgebung ein und schalten Sie in der Produktionsumgebung aus:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-comment">// 开发环境下Schalten Sie den Debug -Modus ein</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">getenv</span></span><span>(</span><span><span class="hljs-string">'ENVIRONMENT'</span></span><span>) === </span><span><span class="hljs-string">'development'</span></span><span>) {
    </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">debug</span></span><span>(</span><span><span class="hljs-string">"d:t"</span></span><span>);
}

</span><span><span class="hljs-comment">// implementieren SQL Abfrage</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM users"</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span>) {
    </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">fetch_assoc</span></span><span>()) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"User: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>] . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
    }
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-variable">$errorMsg</span></span><span> = </span><span><span class="hljs-string">"Query failed: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;error;
    </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-variable">$errorMsg</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">"/path/to/your/logfile.log"</span></span><span>);
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$errorMsg</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

5. Zusammenfassung

Durch die Kombination von MySQLI :: Debug und ERRAGE_LOG können Entwickler die Debugging -Informationen in der MySQL -Datenbank effektiv erfassen und aufzeichnen und sie für eine einfachere nachfolgende Analyse- und Problemstätte ausgeben. In einer Entwicklungsumgebung können Debugging -Informationen den Entwicklern dazu beitragen, Probleme schnell zu identifizieren, während in einer Produktionsumgebung eine angemessene Protokollierung den stabilen Betrieb des Systems sicherstellen kann und gleichzeitig potenzielle Probleme zurückverfolgt und löst.