<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 기사의 내용과 관련이없는 사전 코드 또는 선언 부분은 다음과 같습니다.,필요에 따라 자유롭게 수정할 수 있습니다</span></span><span>
</span><span><span class="hljs-title function_ invoke__">error_reporting</span></span><span>(E_ALL);
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'display_errors'</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<h2>사용 <code>mysqli::</span><span><span class="hljs-variable constant_">get_warnings</span></span><span>
실행 후 get_warnings () 에 전화하여 경고가 있는지 확인하십시오.
SQL이 실행 된 직후에 그리고 다음 명령문이 실행되기 전에 호출해야합니다. 그렇지 않으면 이전 경고 메시지가 지워집니다.
때로는 다음을 통해 반복해야 할 여러 경고가 있습니다.
</span><span><span class="hljs-variable">$warn</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">get_warnings</span></span><span>();
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$warn</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"Warning: %s, %s, %s\n"</span></span><span>, </span><span><span class="hljs-variable">$warn</span></span><span>->errno, </span><span><span class="hljs-variable">$warn</span></span><span>->sqlstate, </span><span><span class="hljs-variable">$warn</span></span><span>->message);
</span><span><span class="hljs-variable">$warn</span></span><span> = </span><span><span class="hljs-variable">$warn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">next</span></span><span>();
}
서버가 경고 출력을 끄지 않는지 확인하고 SQL_Mode 에서 엄격한 모드가 활성화되어 있는지 확인하면 일부 모드로 인해 경고가 오류로 취급 될 수 있습니다.
<span class="fun"></span> <span> <span class = "hljs-string"> 'sql_mode'</span> </span> <span>과 같은 변수 표시;</span>
인코딩 불일치 또는 필드 유형이 일관되지 않으면 데이터베이스 및 클라이언트 문자 세트가 일관되고 필드 유형이 올바른지 확인하기 위해 경고가 발생할 수 있습니다.
<?php
</span><span><span class="hljs-variable">$mysqli</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-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_errno) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"연결이 실패했습니다: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"INSERT INTO test_table (varchar_column) VALUES ('필드 길이 한계를 초과하는 문자열입니다....')"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$mysqli</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-keyword">echo</span></span><span> </span><span><span class="hljs-string">"실행 실패: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error;
}
</span><span><span class="hljs-variable">$warn</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">get_warnings</span></span><span>();
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$warn</span></span><span>) {
</span><span><span class="hljs-keyword">do</span></span><span> {
</span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"경고하다: 일련 번호 %d,상태 %s,정보 %s\n"</span></span><span>, </span><span><span class="hljs-variable">$warn</span></span><span>->errno, </span><span><span class="hljs-variable">$warn</span></span><span>->sqlstate, </span><span><span class="hljs-variable">$warn</span></span><span>->message);
} </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$warn</span></span><span> = </span><span><span class="hljs-variable">$warn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">next</span></span><span>());
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"没有경고하다产生。\n"</span></span><span>;
}
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
mysqli :: get_warnings ()에 경고가 없다는 것을 알게되면 API 자체를 직접 의심하지 말고 먼저 SQL 문에 통화 타이밍과 메소드가 올바른지 여부와 서버 및 클라이언트 환경 구성이 합리적인지 여부를 확인합니다. 단계별 문제 해결은 일반적으로 문제를 해결하고 원하는 경고 정보를 얻을 수 있습니다.
이 기사가 MySQLI :: get_warnings ()를 더 잘 이해하고 사용하여 데이터베이스 작업의 디버깅 효율성을 향상시키는 데 도움이되기를 바랍니다.
관련 태그:
mysqli