MySQLI_STMT :: $ ERROR_LIST를 사용하여 여러 오류 메시지를 얻고 관리하는 방법은 무엇입니까?
오류 처리는 데이터베이스 작업에 MySQLI 확장을 사용할 때 개발 프로세스의 중요한 부분입니다. 일반적으로 mysqli_error () 또는 mysqli_stmt_error ()를 사용하여 단일 오류 메시지를 얻습니다. 그러나 MySQLI는 MySQLI_STMT :: $ ERROR_LIST 속성을 제공하여 준비 문을 실행할 때 여러 오류 메시지를 캡처하고 관리 할 수 있습니다. 이는 복잡한 SQL 작업에 특히 중요하며 코드를 더 잘 디버깅하고 최적화하는 데 도움이 될 수 있습니다.
mysqli_stmt :: $ error_list는 현재 명령문 개체와 관련된 모든 오류 정보를 저장하는 클래스 배열입니다. 이를 통해 단일 오류가 아니라 상세한 오류 정보 목록을 얻을 수 있습니다. 각 요소가 오류 코드 및 오류 텍스트를 포함하여 오류에 대한 특정 설명을 나타내는 배열을 반환합니다.
mysqli_stmt :: $ error_list를 사용하려면 먼저 mysqli 연결을 생성 한 다음 SQL 문을 준비하고 실행해야합니다. 실행 중에 여러 오류가 발생하면 $ error_list에는 모든 오류 메시지가 포함됩니다. 다음으로 Error_List 속성에 액세스하여 Error_List 속성을 봅니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 만들다 MySQLi 연결하다</span></span><span>
</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">"username"</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-comment">// 조사하다연결하다是否成功</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</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-comment">// 준비하다 SQL 성명</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO users (username, email) VALUES (?, ?)"</span></span><span>);
</span><span><span class="hljs-comment">// 조사하다 SQL 성명是否준비하다成功</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"SQL 실수: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error);
}
</span><span><span class="hljs-comment">// 바인딩 매개 변수</span></span><span>
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">"testuser"</span></span><span>;
</span><span><span class="hljs-variable">$email</span></span><span> = </span><span><span class="hljs-string">"invalidemail.com"</span></span><span>; </span><span><span class="hljs-comment">// 여기의 사서함 형식이 유효하지 않다고 가정하십시오</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"ss"</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$email</span></span><span>);
</span><span><span class="hljs-comment">// 구현하다 SQL 성명</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</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">$stmt</span></span><span>->errno) {
</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">$stmt</span></span><span>->error . </span><span><span class="hljs-string">"\n"</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-comment">// 打印所有실수信息</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$stmt</span></span><span>->error_list);
} </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">"성공적으로 삽입하십시오!"</span></span><span>;
}
</span><span><span class="hljs-comment">// 关闭성명和연결하다</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</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>
</span></span>
이 예에서는 먼저 사용자 테이블에 데이터를 삽입하려고합니다. 이메일 필드 invalideMail.com 의 값이 잘못되었으므로 MySQL은 여러 오류 메시지를 반환하여 Error_List 에 저장됩니다.
mysqli_stmt :: $ error_list 에 의해 반환 된 배열에는 오류 부분이 포함됩니다. 일반적으로 각 요소는 Errno 및 Error 의 두 필드를 포함하는 연관 배열입니다. Errno는 오류 코드를 나타내고 오류 는 오류 메시지에 대한 설명입니다. 이 배열을 통해 루프하고 각 오류의 자세한 정보를 하나씩 출력 할 수 있습니다.
<span><span><span class="hljs-meta"><?php</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-title function_ invoke__">count</span></span><span>(</span><span><span class="hljs-variable">$stmt</span></span><span>->error_list) > </span><span><span class="hljs-number">0</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-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>->error_list </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$error</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">$error</span></span><span>[</span><span><span class="hljs-string">'errno'</span></span><span>] . </span><span><span class="hljs-string">"\n"</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">$error</span></span><span>[</span><span><span class="hljs-string">'error'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
이 예제는 각 오류 코드와 해당 오류 메시지를 하나씩 출력합니다. 여러 오류가있는 경우 어떤 문제가 발생하는지 명확하게 이해하고 다른 오류에 대해 적절하게 처리 할 수 있습니다.
mysqli_stmt :: $ error_list를 사용하는 데있어 중요한 장점은 여러 오류 메시지를 캡처 할 수 있다는 것입니다. 일부 복잡한 데이터베이스 작업에서는 여러 가지 이유로 오류가 발생할 수 있으며 Error_List는 개발자가 한 번에 모든 오류를 얻을 수 있도록 디버깅 효율성을 향상시킬 수 있습니다. 또한 이러한 방식으로 다른 오류 유형에 따라 다른 작업을 수행하는 등 오류 처리 로직을보다 신중하게 제어 할 수 있습니다.
MySQLI_STMT :: $ ERRER_LIST는 MySQLI가 제공하는 강력한 기능으로 개발자가 SQL 문을 실행할 때 여러 오류 메시지를 캡처하고 처리 할 수 있습니다. 이 속성을 사용하면 SQL 실행의 문제를 더 잘 이해하여 데이터베이스 작업의 안정성 및 코드 안정성을 향상시킬 수 있습니다.
관련 태그:
mysqli_stmt