larval 如何捕获mysql错误

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

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 如何捕获

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享