찾다

 >  Q&A  >  본문

MySQLi에서는 쿼리 오류를 예외로 변환합니다.

<p>MySQLi 쿼리 오류를 예외로 변환하려고 하는데 불가능합니다. mysqli_sql_Exception 예외는 데이터베이스 연결에 실패할 때만 발생합니다. </p> <p>저는 사용자 정의 래퍼 클래스에 포함된 절차적 MySQLi 함수와 함께 <code>mysqli_report(MYSQLI_REPORT_STRICT)</code>를 사용했습니다. </p> <p><strong>이전 코드: </strong></p> <pre class="brush:php;toolbar:false;">공용 함수 mysqlQuery($SQL) { $this->Result = mysqli_query($this->DBlink, $SQL); if($this->결과 === false) throw new MySQLiQueryException($SQL, mysqli_error($this->DBlink), mysqli_errno($this->DBlink)); $this->결과를 반환합니다. }</pre> <p><strong>질문: </strong>쿼리가 실패해도 경고나 예외가 발생하지 않습니다. 이것이 정상인가요? 그러면 mysqli_query()가 false를 반환하는지 확인해야 합니까? </p>
P粉060528326P粉060528326492일 전562

모든 응답(2)나는 대답할 것이다

  • P粉420958692

    P粉4209586922023-08-25 10:43:00

    아니요.

    요구 사항을 따르고 SQL 오류에 대해 예외를 발생시키도록 mysqli 드라이버에 지시할 수 있어야 하지만 아직 활성화되지 않은 경우 활성화해야 합니다 MYSQLI_REPORT_ERROR....

    으아아아

    mysqli_query()이제 오류 발생 시 예외가 발생합니다. 실패 시 반환 값을 확인할 필요가 없습니다(어쨌든 예외가 발생합니다).

    으아아아

    (참고: 다시 발생하는 예외에서는 $this->SQL更改为$SQL하겠습니다.)

    회신하다
    0
  • P粉549412038

    P粉5494120382023-08-25 00:06:47

    얼마 전에 이 문제를 성공적으로 해결했습니다. 다른 답변에서 지적했듯이,

    으아악

    는 mysqli에게 예외를 발생시키도록 지시하는 올바른 방법입니다.

    모든 쿼리에 try-catch를 포함하지 않도록 주의하세요. 이것은 매우 흔한 오해입니다. 일단 예외를 사용하기 시작하면 모든 곳에서 try and catch를 던지기 시작해야 합니다. 반면에 try-catch는 주의해서 사용해야 합니다. 오류의 99%는 사이트에서 처리되지 않고 사이트 전체 오류 처리기에 의해 처리되어야 합니다. PHP 오류 보고에 대한 내 기사에서 이 주제에 대해 자세히 알아볼 수 있습니다.

    회신하다
    0
  • 취소회신하다