현재 위치: > 최신 기사 목록> mysqli :: $ errno는 오류를 포착 할 수 없습니까? 아마도 당신은 잘못된 mysqli 객체 인스턴스를 사용했을 것입니다

mysqli :: $ errno는 오류를 포착 할 수 없습니까? 아마도 당신은 잘못된 mysqli 객체 인스턴스를 사용했을 것입니다

M66 2025-08-05

MySQLI 확장은 데이터베이스 작업에 PHP를 사용할 때 매우 일반적인 도구입니다. 그러나 일부 개발자는 MySqli :: $ errno가 오류를 처리 할 때 오류를 포착 할 수없는 상황을 만날 수 있습니다. 여러 번, 이것은 코드 자체에 문제가되지 않지만 MySQLI 객체 인스턴스가 잘못 사용되기 때문입니다.

이 기사에서는 MySQLI 오류 캡처 메커니즘을 깊이 탐색하고 MySQLI :: $ errno가 오류를 잡을 수없는 이유를 분석하고 올바른 사용 방법을 제공합니다.

1. MySQLI의 기본 사용

먼저 데이터베이스에 연결하고 MySQLI를 사용하여 쿼리를 실행하는 방법을 간략하게 검토해 봅시다. 일반적으로 다음 코드를 사용하여 데이터베이스 연결을 설정합니다.

 <?php
$host = 'localhost';
$username = 'root';
$password = '';
$dbname = 'test_db';

// 만들다 MySQLi 객체 인스턴스
$mysqli = new mysqli($host, $username, $password, $dbname);

// 연결이 성공했는지 확인하십시오
if ($mysqli->connect_error) {
    die('연결이 실패했습니다: ' . $mysqli->connect_error);
}
?>

이 코드는 새로운 mysqli () 를 통해 새로운 mysqli 객체 인스턴스 $ mysqli를 생성하고 연결이 실패하면 오류 메시지를 출력합니다.

후속 코드에서 쿼리를 실행하고 문제가있는 경우 $ mysqli-> errno$ mysqli-> 오류가 오류를 잡고 진단하는 데 도움이 될 수 있습니다.

2. MySQLI :: $ errno를 사용하여 오류를 잡으십시오

MySQLI에서 $ errno는 마지막 오류 코드를 저장하는 데 사용되며 $ 오류는 오류에 대한 설명을 저장합니다. 일반적으로 다음과 같은 방법으로 오류를 포착 할 수 있습니다.

 <?php
$sql = "SELECT * FROM non_existent_table"; // 의도적으로 테이블 이름을 작성했습니다

$result = $mysqli->query($sql);

if ($mysqli->errno) {
    echo "MySQL 실수: " . $mysqli->error;
} else {
    // 프로세스 쿼리 결과
}
?>

이 코드에서는 존재하지 않는 테이블을 의도적으로 쿼리합니다. 쿼리가 실패하면 $ mysqli-> errno는 오류 코드를 포착하고 $ mysqli-> 오류가 오류 메시지를 표시합니다.

3. 왜 mysqli :: $ errno가 오류를 잡을 수 없습니까?

그렇다면 왜 우리는 때때로 mysqli :: $ errno가 오류를 잡을 수없는 상황을 만나는가? 가장 일반적인 이유 중 하나는 여러 MySQLI 객체 인스턴스가 잘못 사용되거나 쿼리가 만들어지면 오류를 올바르게 점검하지 않기 때문입니다.

예를 들어, mysqli를 사용하는 경우 다음과 같이 사용합니다.

 <?php
// 실수的用法:올바른 용도가 없습니다 MySQLi 객체 인스턴스
$mysqli1 = new mysqli($host, $username, $password, $dbname);
$mysqli2 = new mysqli($host, $username, $password, $dbname);

$sql = "SELECT * FROM non_existent_table";
$result = $mysqli1->query($sql); // 사용 $mysqli1 질문

// 사용실수的实例来检查실수
if ($mysqli2->errno) {  // 실수!应该사용 $mysqli1 来检查실수
    echo "MySQL 실수: " . $mysqli2->error;
}
?>

위의 코드에서, 우리는 두 개의 mysqli 객체 $ mysqli1$ mysqli2 를 만들었지 만 쿼리를 수행 할 때 $ mysqli1 을 사용했으며 오류 확인을 $ mysqli2 로 사용했습니다. $ mysqli2가 쿼리를 실행하지 않으므로 오류가 발생하지 않습니다.

4. MySQLI 객체 인스턴스를 올바르게 사용하십시오

오류가 올바르게 잡힐 수 있도록 쿼리 및 확인 오류를 수행하려면 항상 동일한 MySQLI 객체 인스턴스를 사용해야합니다. 수정 된 코드는 다음과 같습니다.

 <?php
$mysqli = new mysqli($host, $username, $password, $dbname);

$sql = "SELECT * FROM non_existent_table"; // 의도적으로 테이블 이름을 작성했습니다

$result = $mysqli->query($sql);

if ($mysqli->errno) {
    echo "MySQL 실수: " . $mysqli->error;
} else {
    // 프로세스 쿼리 결과
}
?>

이 수정 된 예에서는 쿼리를 실행하든 오류를 포착하든 를 통해 수행됩니다. 이러한 방식으로 오류 코드 및 오류 메시지를 올바르게 캡처 할 수 있습니다.

5. m66.net 도메인 이름을 사용하십시오

프로젝트의 데이터베이스 또는 외부 리소스에 대한 액세스 (예 : API를 통해 외부 서비스에 연결)가 사용되는 경우 URL을 사용할 수 있습니다. 요구 사항을 충족시키기 위해 예를 들어 M66.net 으로 나타나는 모든 URL 도메인을 간단히 교체 할 수 있습니다.

 <?php
$api_url = "https://api.m66.net/endpoint";
$response = file_get_contents($api_url);
?>

이러한 방식으로, 다른 도메인 이름을 포함시킬 수있는 모든 URL은 M66.net 도메인 이름으로 통합되어 귀하의 요구를 충족시킵니다.

6. 요약

mysqli :: $ errno는 종종 mysqli 객체 인스턴스의 잘못된 사용으로 인해 오류를 포착하지 못합니다. 개발 과정에서 다음과 같습니다.

  • 쿼리 및 오류 확인에 대한 MySQLI 객체 인스턴스는 하나뿐입니다.

  • $ mysqli-> errno$ mysqli-> 오류를 사용하여 오류를 잡고 처리하십시오.

  • 외부 리소스 또는 API 호출이 포함될 때 URL의 도메인 이름이 올바른지 확인하십시오.

이러한 원칙을 따를 수있는 경우, 일관되지 않은 객체 인스턴스로 인한 문제를 효과적으로 피하고 MySQLI 오류 캡처 메커니즘이 정상적으로 작동 할 수 있는지 확인할 수 있습니다.