我是靠谱客的博主 彩色汽车,最近开发中收集的这篇文章主要介绍larval 如何捕获mysql错误,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

推荐:《mysql视频教程》

Laravel使用PDO,因此您可以使用errorInfo变量返回SQLSTATE错误和消息。基本上,您需要使用$e->errorInfo;

如果要将所有SQL错误记录到数据库中,可以使用异常处理程序(app/Exceptions/Handler.php并侦听QueryExceptions。像这样的:

public function render($request, Exception $e)
{
    switch ($e) {
        case ($e instanceof IlluminateDatabaseQueryException):
            LogTracker::saveSqlError($e);
            break;
        default:
            LogTracker::saveError($e, $e->getCode());
    }
    return parent::render($request, $e);
}
登录后复制

然后你可以用这样的东西:

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..
    // ....
}
登录后复制

以上就是larval 如何捕获mysql错误的详细内容,更多请关注靠谱客其它相关文章!

最后

以上就是彩色汽车为你收集整理的larval 如何捕获mysql错误的全部内容,希望文章能够帮你解决larval 如何捕获mysql错误所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部