데이터베이스 작업에 PHP를 사용할 때는 일반적으로 MySQLI 확장을 통해 MySQL 데이터베이스와 상호 작용합니다. MySQL은 풍부한 기능을 제공합니다. 일반적으로 사용되는 속성 중 하나는 Errno 이며 데이터베이스 작업의 오류 코드를 나타냅니다. mysqli :: $ errno가 0을 반환하면 일반적으로 오류가 발생하지 않았 음을 의미합니다. 그러나 0을 반환하면 데이터베이스 작업에 문제가 없다는 것을 의미합니까? 이 기사는이 문제에 대해 자세히 논의 할 것입니다.
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-> 오류는 오류에 대한 특정 정보를 제공합니다.
mysqli :: $ errno 는 일반적으로 데이터베이스 작업에 오류가 없음을 의미하지만 작업이 완전히 정상임을 의미하지는 않습니다. Errno가 0을 반환하는 경우에도 문제가 여전히 존재할 수있는 몇 가지 일반적인 상황은 다음과 같습니다.
데이터베이스 연결이 성공하더라도 쿼리 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을 반환하지만 쿼리 테이블은 존재하지 않으므로 실제로는 데이터가 없습니다. 오류 코드는 없지만 논리 문제는 여전히 존재합니다.
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;
}
}
?>
mysqli :: $ errno 반환 0은 일반적으로 오류가 없지만 데이터베이스 작동의 무결성을 보장하기 위해 오류가 없음을 의미하지만 다음과 같은 조치를 취할 수 있습니다.
오류 코드가 없어도 쿼리가 예상 결과를 반환하는지 확인하십시오. 예를 들어, mysqli :: num_rows를 확인하여 선택 쿼리가 데이터를 반환하는지 확인할 수 있습니다.
mysqli :: $ 경고 속성을 확인하면 잠재적 인 경고 메시지를 캡처하여 잠재적 인 문제가 없도록 할 수 있습니다.
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을 반환하여 데이터베이스 작동 수준에 오류가 없음을 나타내지 만 데이터베이스 작업에 문제가 완전히 없음을 의미하지는 않습니다. 데이터베이스 작업의 정확성을 보장하기 위해 개발자는 쿼리 결과의 유효성, 경고 정보 처리 및 예외 처리 사용을 포함하여 추가 점검을 수행해야합니다. 이러한 요소를 포괄적 인 방식으로 고려함으로써 데이터베이스 작업의 신뢰성과 견고성을 보장 할 수 있습니다.