현재 위치: > 최신 기사 목록> mysqli :: $ errno returning 0은 모든 것이 정상이라는 것을 의미합니까?

mysqli :: $ errno returning 0은 모든 것이 정상이라는 것을 의미합니까?

M66 2025-05-29

데이터베이스 작업에 PHP를 사용할 때는 일반적으로 MySQLI 확장을 통해 MySQL 데이터베이스와 상호 작용합니다. MySQL은 풍부한 기능을 제공합니다. 일반적으로 사용되는 속성 중 하나는 Errno 이며 데이터베이스 작업의 오류 코드를 나타냅니다. mysqli :: $ errno가 0을 반환하면 일반적으로 오류가 발생하지 않았 음을 의미합니다. 그러나 0을 반환하면 데이터베이스 작업에 문제가 없다는 것을 의미합니까? 이 기사는이 문제에 대해 자세히 논의 할 것입니다.

1. mysqli :: $ errno 소개

PHP에서 MySQLI :: $ Errno는 MySQLI 객체의 속성으로 마지막 데이터베이스 작업의 오류 코드를 반환합니다. 구체적으로:

  • 작업이 성공하고 오류가 발생하지 않으면 Errno 의 값은 0이됩니다.

  • 작업에 실패하면 Errno는 0이 아닌 오류 코드를 반환하고 MySQLI :: $ 오류 속성을 사용하여 자세한 오류 정보를 얻을 수 있습니다.

Code example:

 <?php
$mysqli = new mysqli("localhost", "user", "password", "database");

if ($mysqli->connect_errno) {
    echo "연결이 실패했습니다: " . $mysqli->connect_error;
    exit();
}

$query = "SELECT * FROM users";
$result = $mysqli->query($query);

if ($mysqli->errno) {
    echo "쿼리 오류: " . $mysqli->error;
} else {
    echo "쿼리 성공!";
}
?>

이 예에서 쿼리가 성공하면 $ mysqli-> errno는 0을 반환합니다. 쿼리가 실패하면 $ mysqli-> errno는 0이 아닌 오류 코드를 반환하고 $ mysqli-> 오류는 오류에 대한 특정 정보를 제공합니다.

2. Errno 는 0은 문제가 없다는 것을 의미하지 않습니다.

mysqli :: $ errno 는 일반적으로 데이터베이스 작업에 오류가 없음을 의미하지만 작업이 완전히 정상임을 의미하지는 않습니다. Errno가 0을 반환하는 경우에도 문제가 여전히 존재할 수있는 몇 가지 일반적인 상황은 다음과 같습니다.

2.1 데이터베이스 연결이 성공적이지만 쿼리 문에는 논리적 문제가 있습니다.

데이터베이스 연결이 성공하더라도 쿼리 SQL 문은 논리적으로 잘못 될 수 있습니다. 예를 들어, 쿼리 테이블이 존재하지 않거나 반환 된 결과가 비어 있습니다.

예:

 <?php
$mysqli = new mysqli("localhost", "user", "password", "database");

if ($mysqli->connect_errno) {
    echo "연결이 실패했습니다: " . $mysqli->connect_error;
    exit();
}

$query = "SELECT * FROM non_existent_table";  // 쿼리 존재하지 않는 테이블
$result = $mysqli->query($query);

if ($mysqli->errno) {
    echo "쿼리 오류: " . $mysqli->error;
} else {
    if ($result->num_rows == 0) {
        echo "데이터가 발견되지 않았습니다!";
    } else {
        echo "쿼리 성공!";
    }
}
?>

이 예에서는 mysqli :: $ errno가 0을 반환하지만 쿼리 테이블은 존재하지 않으므로 실제로는 데이터가 없습니다. 오류 코드는 없지만 논리 문제는 여전히 존재합니다.

2.2 경고 정보는 Errno에 영향을 미치지 않습니다

MySQL Extension은 일부 경고 메시지를 생성하지만 이러한 경고는 Errno 에 의해 포착되지 않습니다. 즉, 일부 경고가 있더라도 Errno는 여전히 0 일 수 있습니다.

예를 들어, 특정 쿼리가 실행되면 MySQL은 오류 대신 경고를 발행 할 수 있습니다. 단지 경고라면 Errno 는 여전히 0이지만 MySQL이 경고를 반환하는 경우 조심해야합니다.

 <?php
$mysqli = new mysqli("localhost", "user", "password", "database");

if ($mysqli->connect_errno) {
    echo "연결이 실패했습니다: " . $mysqli->connect_error;
    exit();
}

$query = "SELECT id FROM users LIMIT 10";  // 가정 users 테이블이 있습니다 id 전지,그러나 일부 데이터가 누락되었습니다
$result = $mysqli->query($query);

if ($mysqli->errno) {
    echo "쿼리 오류: " . $mysqli->error;
} else {
    echo "쿼리 성공!";
    // 경고가있는 경우,통과 할 수 있습니다 `mysqli::$warnings` 확인하다
    $warnings = $mysqli->warnings;
    if ($warnings) {
        echo "경고 메시지: " . $warnings->message;
    }
}
?>

3. 데이터베이스 작업에 문제가없는 방법은 무엇입니까?

mysqli :: $ errno 반환 0은 일반적으로 오류가 없지만 데이터베이스 작동의 무결성을 보장하기 위해 오류가 없음을 의미하지만 다음과 같은 조치를 취할 수 있습니다.

3.1 쿼리 결과를 확인하십시오

오류 코드가 없어도 쿼리가 예상 결과를 반환하는지 확인하십시오. 예를 들어, mysqli :: num_rows를 확인하여 선택 쿼리가 데이터를 반환하는지 확인할 수 있습니다.

3.2 mysqli :: $ 경고 사용

mysqli :: $ 경고 속성을 확인하면 잠재적 인 경고 메시지를 캡처하여 잠재적 인 문제가 없도록 할 수 있습니다.

3.3 트라이 캐치 예외 처리를 사용하십시오

MySQLI는 그 자체로 예외를 던지지 않지만 MySQLI_Report (MySQLI_Report_Strict)를 설정하여 오류를 더 잘 처리하여 예외를 제외 할 수 있습니다.

예:

 <?php
mysqli_report(MYSQLI_REPORT_STRICT);

try {
    $mysqli = new mysqli("localhost", "user", "password", "database");
    $query = "SELECT * FROM users";
    $result = $mysqli->query($query);
    
    // 프로세스 쿼리 결과
} catch (mysqli_sql_exception $e) {
    echo "잡힌 예외: " . $e->getMessage();
}
?>

이러한 방식으로 데이터베이스 작업이 실패 할 때 예외를 포착하고 그에 따라 처리 할 수 ​​있습니다.

결론적으로

mysqli :: $ errno는 0을 반환하여 데이터베이스 작동 수준에 오류가 없음을 나타내지 만 데이터베이스 작업에 문제가 완전히 없음을 의미하지는 않습니다. 데이터베이스 작업의 정확성을 보장하기 위해 개발자는 쿼리 결과의 유효성, 경고 정보 처리 및 예외 처리 사용을 포함하여 추가 점검을 수행해야합니다. 이러한 요소를 포괄적 인 방식으로 고려함으로써 데이터베이스 작업의 신뢰성과 견고성을 보장 할 수 있습니다.