PHP 개발에서 데이터베이스 작업이 가장 일반적인 부분입니다. 데이터베이스와 상호 작용할 때, 특히 MySQLI 확장 기능을 사용할 때 오류 캡처 및 녹화는 프로그램 디버깅 및 유지 보수에 중요합니다. MySQLI는 MySQLI :: $ Errno 및 MySQLI :: $ 오류 속성을 제공하여 개발자가 데이터베이스 작업에서 오류의 특정 원인을 이해하도록 도와줍니다.
이 기사는 효과적인 오류 로깅을 위해 MySQLI :: $ errno를 사용하는 방법을 소개하여 개발자가 데이터베이스 연결 및 작업 중에 발생할 수있는 오류를 더 잘 처리 할 수 있도록 도와줍니다.
mysqli :: $ errno는 마지막 데이터베이스 작업에서 오류가 발생했을 때 오류 코드를 저장하는 데 사용되는 MySQLI 클래스의 속성입니다. 이 오류 코드는 발생한 특정 오류 유형을 식별하는 정수 값입니다. mysqli :: $ errno는 데이터베이스 작업에서 오류가 발생할 때만 유효한 값을 얻을 수 있습니다. 오류가 발생하지 않으면 그 값은 0이됩니다.
또한 MySQLI :: $ 오류 속성에는 오류에 대한 자세한 설명 정보 (예 : 오류 메시지)가 포함되어 있습니다. 이 두 속성은 개발자가 문제를 정확하게 진단하는 데 도움이 될 수 있습니다.
mysqli :: $ errno 의 오류 코드 값이 사전 정의되었습니다. 다음은 몇 가지 일반적인 오류 코드와 그 의미입니다.
1045 : 인증 오류 데이터베이스에 액세스 할 때 (예 : 사용자 이름 또는 비밀번호 오류).
2002 : 일반적으로 데이터베이스 호스트는 도달 할 수 없기 때문에 연결에 실패했습니다.
1146 : 테이블이 존재하지 않습니다.
1064 : SQL 구문 오류.
실제 개발에서 오류를 잡는 것 외에도 일반적으로 나중에 시청 및 분석을 위해 이러한 오류를 기록해야합니다. 다음은 mysqli :: $ errno 및 mysqli :: $ 오류 사용 방법을 보여주는 기본 예입니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 데이터베이스 연결 매개 변수를 구성합니다</span></span><span>
</span><span><span class="hljs-variable">$host</span></span><span> = </span><span><span class="hljs-string">'localhost'</span></span><span>;
</span><span><span class="hljs-variable">$user</span></span><span> = </span><span><span class="hljs-string">'root'</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">'password'</span></span><span>;
</span><span><span class="hljs-variable">$dbname</span></span><span> = </span><span><span class="hljs-string">'test_db'</span></span><span>;
</span><span><span class="hljs-comment">// 데이터베이스 연결을 만듭니다</span></span><span>
</span><span><span class="hljs-variable">$conn</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-variable">$host</span></span><span>, </span><span><span class="hljs-variable">$user</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</span></span><span>);
</span><span><span class="hljs-comment">// 연결이 성공했는지 확인하십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$conn</span></span><span>->connect_error) {
</span><span><span class="hljs-comment">// 연결 오류 로그</span></span><span>
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Connection failed: "</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>->connect_error, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'errors.log'</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>();
}
</span><span><span class="hljs-comment">// 쿼리를 실행하십시오</span></span><span>
</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT * FROM non_existent_table"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$conn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>);
</span><span><span class="hljs-comment">// 쿼리가 성공했는지 확인하십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$result</span></span><span>) {
</span><span><span class="hljs-comment">// 쿼리가 실패하면,로그 오류 정보 및 오류 코드</span></span><span>
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Error: "</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>->errno . </span><span><span class="hljs-string">" - "</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>->error . </span><span><span class="hljs-string">"\n"</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'errors.log'</span></span><span>);
}
</span><span><span class="hljs-comment">// 연결을 닫으십시오</span></span><span>
</span><span><span class="hljs-variable">$conn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
이 예에서 먼저 데이터베이스에 연결하십시오. 연결이 실패하면 연결 오류가 Errors.Log 파일에 로그인됩니다. 다음으로, 우리는 존재하지 않는 테이블에서 데이터를 얻으려고 쿼리 작업을 수행합니다. 쿼리가 실패하면 오류 메시지를 캡처하고 오류 코드와 오류 메시지를 함께 기록합니다.
프로덕션 환경에서 오류 로그 기록은 어느 정도의 적시성을 가져야하므로 오류 로그 레코드를 오류 로그 레코드에 추가 할 수있어 문제를 추적하기가 더 쉽습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 현재 시간을 얻으십시오</span></span><span>
</span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span><span><span class="hljs-comment">// 쿼리를 실행하십시오并记录错误日志</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$result</span></span><span>) {
</span><span><span class="hljs-comment">// 로그에 타임 스탬프를 추가하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"[<span class="hljs-subst">$date</span></span></span><span>] Error: " . </span><span><span class="hljs-variable">$conn</span></span><span>->errno . </span><span><span class="hljs-string">" - "</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>->error . </span><span><span class="hljs-string">"\n"</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'errors.log'</span></span><span>);
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
각 오류 로그에 현재 시간을 추가하면 각 오류의 특정 시간을 명확하게 확인하여 개발자가보다 정확한 문제 해결을 수행 할 수 있습니다.
시간이 지남에 따라 오류 로그 파일이 매우 커져 시스템 성능과 유지 관리에 영향을 줄 수 있습니다. 따라서 정기적으로 청소하고 오류 로그를 보관하는 것이 매우 중요합니다. 다음 방법을 사용하여 오류 로그 관리를 최적화 할 수 있습니다.
정기적 인 아카이브 및 정리 : 정기적으로 로그 파일을 보관하고 오래된 로그 파일을 정리하기 위해 예정된 작업을 설정합니다.
로그 회전 : 로그 로트 테이트 와 같은 로그 회전 도구를 사용하여 로그 파일의 크기를 자동으로 관리합니다.
등급화 로그 : 오류의 심각성에 따라 다른 로그 레벨 (예 : 정보, 경고, 오류)이 기록에 사용됩니다.
Mysqli :: $ errno 및 mysqli :: $ 오류 로 PHP 개발자는 데이터베이스 작업에서 오류를 쉽게 포착하고 기록 할 수 있습니다. 타임 스탬프, 로그 파일 관리 및 청소 전략, 오류 로그 기록 및 최적화를 결합하는 것이 효과적으로 수행 될 수 있습니다. 이러한 조치는 개발자가 개발 및 테스트 단계에서 적시에 문제를 발견하는 데 도움이 될뿐만 아니라 생산 환경에서 나중에 문제를 해결하기위한 중요한 단서를 제공하는 데 도움이 될 수 있습니다.
이 기사를 소개함으로써 효과적인 오류 로깅을 위해 MySQLI :: $ errno를 사용하는 방법을 더 잘 이해하고 실제 개발에 적용하여 코드의 견고성과 유지 가능성을 향상시킬 수 있기를 바랍니다.