MySQLi에서는 쿼리 오류를 예외로 변환합니다.
P粉060528326
P粉060528326 2023-08-24 11:53:00
0
2
464
<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粉060528326
P粉060528326

모든 응답(2)
P粉420958692

아니요.

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

으아아아

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

으아아아

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

P粉549412038

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

으아악

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

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!