larval 如何捕获mysql错误

互联网 20-11-6

larval捕获mysql错误的方法:1、使用errorInfo变量返回SQLSTATE错误和消息;2、使用异常处理程序“app/Exceptions/Handler.php并侦听QueryExceptions”将所有SQL错误记录到数据。

推荐:《mysql视频教程》

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

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

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

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

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错误的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: larval
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:对MySQL锁、事务、MVCC的简单认识

相关资讯