larval의 mysql 오류 캡처 방법: 1. errorInfo 변수를 사용하여 SQLSTATE 오류 및 메시지를 반환합니다. 2. 예외 처리기 "app/Exceptions/Handler.php 및 수신 대기"를 사용하여 모든 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.. // .... }
위 내용은 애벌레 mysql 오류를 잡는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!