Heim > Datenbank > MySQL-Tutorial > Larval, wie man MySQL-Fehler abfängt

Larval, wie man MySQL-Fehler abfängt

藏色散人
Freigeben: 2020-11-06 17:42:08
Original
2345 Leute haben es durchsucht

larvals Methode zum Erfassen von MySQL-Fehlern: 1. Verwenden Sie die Variable „errorInfo“, um SQLSTATE-Fehler und -Meldungen zurückzugeben. 2. Verwenden Sie den Ausnahmehandler „app/Exceptions/Handler.php und warten Sie auf QueryExceptions“, um alle SQL-Fehler in den Daten zu protokollieren.

Larval, wie man MySQL-Fehler abfängt

Empfohlen: „MySQL-Video-Tutorial

Laravel verwendet PDO, sodass Sie die Variable errorInfo verwenden können, um SQLSTATE-Fehler und -Meldungen zurückzugeben. Grundsätzlich müssen Sie $e->errorInfo;

verwenden. Wenn Sie alle SQL-Fehler in der Datenbank protokollieren möchten, können Sie einen Ausnahmehandler (app/Exceptions/Handler.php) verwenden und auf QueryExceptions warten. So:

public function render($request, Exception $e)
{
    switch ($e) {
        case ($e instanceof \Illuminate\Database\QueryException):
            LogTracker::saveSqlError($e);
            break;
        default:
            LogTracker::saveError($e, $e->getCode());
    }
    return parent::render($request, $e);
}
Nach dem Login kopieren

Dann können Sie so etwas verwenden:

public function saveSqlError($exception)
{
    $sql = $exception->getSql();
    $bindings = $exception->getBindings()
    // Process the query's SQL and parameters and create the exact query
    foreach ($bindings as $i => $binding) {
        if ($binding instanceof \DateTime) {
            $bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');
        } else {
            if (is_string($binding)) {
                $bindings[$i] = "'$binding'";
            }
        }
    }
    $query = str_replace(array('%', '?'), array('%%', '%s'), $sql);
    $query = vsprintf($query, $bindings);
    // Here's the part you need
    $errorInfo = $exception->errorInfo;
    $data = [
        'sql'        => $query,
        'message'    => isset($errorInfo[2]) ? $errorInfo[2] : '',
        'sql_state'  => $errorInfo[0],
        'error_code' => $errorInfo[1]
    ];
    // Now store the error into database, if you want..
    // ....
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonLarval, wie man MySQL-Fehler abfängt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage