PHP에서 MySQLI Extension은 풍부한 데이터베이스 상호 작용 기능을 제공하여 개발자가 MySQL 데이터베이스와 효율적으로 연결하고 작동 할 수 있도록 도와줍니다. mysqli :: 쿼리 메소드는 일반적으로 데이터베이스 쿼리를 실행하는 데 사용되지만 쿼리 실행 중에 다양한 오류가 발생할 수 있습니다. 오류 문제 해결의 효율성을 향상시키기 위해 mysqli :: 쿼리와 함께 사용될 때의 오류는 mysqli :: $ errno 속성을 통해 정확하게 위치 할 수 있습니다.
이 기사는 mysqli :: $ errno를 사용하여 오류를 잡고 개발자가 문제를 더 빨리 찾을 수 있도록 상세한 오류 정보를 제공하는 방법을 소개합니다.
mysqli :: 쿼리 메소드는 데이터베이스를 수정하기 위해 삽입 , 업데이트 , 삭제 및 기타 작업을 수행 할 때 SQL 쿼리 문을 실행하거나 쿼리 결과를 반환하거나 true 또는 false를 반환하는 데 사용됩니다.
mysqli :: $ errno 속성에는 마지막 데이터베이스 작업의 오류 코드가 포함되어 있습니다. 이 속성을 통해 SQL 문을 실행할 때 오류가 발생했는지 여부를 이해하고 특정 오류 유형을 얻을 수도 있습니다.
mysqli :: 쿼리 의 기본 사용법은 다음과 같습니다.
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
$sql = "SELECT * FROM users";
$result = $mysqli->query($sql);
if (!$result) {
echo "Query failed with error code: " . $mysqli->errno;
} else {
// 프로세스 쿼리 결과
}
?>
위의 예에서는 mysqli :: query를 통해 SQL 쿼리 문을 실행하고 mysqli :: $ errno를 사용하여 쿼리가 실패 할 때 오류 코드를 얻습니다.
mysqli :: $ errno 속성을 확인하면 데이터베이스 작동 실패에 대한 오류 코드를 얻을 수 있습니다. 오류 코드를 기반으로 문제를 더 이해할 수 있습니다. 예를 들어, 일반적인 오류 코드에는 다음이 포함됩니다.
1049 : 알 수없는 데이터베이스.
1146 : 테이블이 존재하지 않습니다.
1064 : SQL 구문 오류.
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
// 잘못된 SQL 성명,구문 오류
$sql = "SELEC * FROM users"; // 알아채다,나는 여기에 의도적으로 썼다 `SELECT`
$result = $mysqli->query($sql);
if (!$result) {
// 오류 코드 및 오류 정보를 가져옵니다
echo "Query failed with error code: " . $mysqli->errno . " - " . $mysqli->error;
} else {
// 프로세스 쿼리 결과
}
?>
위의 예에서, 우리는 의도적으로 잘못된 SQL 명령문 ( 사용자로부터 selec * )을 썼습니다. 쿼리 실행이 실패하면 mysqli :: $ errno를 통해 오류 코드를 가져오고 mysqli :: $ error 를 통해 오류 정보를 얻습니다. 이를 통해 SQL 구문 오류의 특정 문제를 명확히하는 데 도움이 될 수 있습니다.
실제 개발에서 우리는 일반적으로 문제를 신속하게 발견하고 수정할 수 있도록 오류 처리를 위해 mysqli :: $ errno 와 mysqli :: $ 오류를 결합합니다. 오류를 처리하는 몇 가지 일반적인 방법은 다음과 같습니다.
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
$sql = "SELECT * FROM users";
$result = $mysqli->query($sql);
if (!$result) {
switch ($mysqli->errno) {
case 1146:
echo "Table not found: " . $mysqli->error;
break;
case 1064:
echo "SQL syntax error: " . $mysqli->error;
break;
default:
echo "Database error: " . $mysqli->error;
}
} else {
// 프로세스 쿼리 결과
}
?>
이 예에서는 다른 오류 코드 (예 : 테이블이 존재하지 않거나 SQL 구문 오류)를 기반으로 특정 오류 정보를 출력하여 개발자가 진행중인 작업을보다 명확하게 알 수 있도록합니다.
생산 환경에서는 일반적으로 사용자, 특히 데이터베이스 관련 오류에 오류 정보를 직접 출력하는 것이 좋습니다. 보안을 개선하기 위해 오류 정보를 후속 시청을 위해 로그 파일에 기록 할 수 있습니다.
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
$sql = "SELECT * FROM users";
$result = $mysqli->query($sql);
if (!$result) {
// 벌채 반출
error_log("SQL Error [" . $mysqli->errno . "]: " . $mysqli->error, 3, "/path/to/error.log");
echo "An error occurred. Please check the log file for details.";
} else {
// 프로세스 쿼리 결과
}
?>
여기에서 Error_Log 함수는 개발자가 문제를 추적하고 해결할 수 있도록 로그 파일에 오류 정보를 작성합니다.
mysqli :: $ errno 속성을 통해 데이터베이스 작업에서 오류를 정확하게 캡처하고 오류 코드 및 오류 정보를 기반으로 문제를 추가로 찾아서 해결할 수 있습니다. 우수한 오류 처리 메커니즘과 결합하여 개발자는 PHP 및 MySQL 상호 작용을보다 효과적으로 디버깅하고 최적화 할 수 있습니다.
우수한 오류 처리는 개발자 디버그 코드뿐만 아니라 애플리케이션 안정성 및 사용자 경험을 향상시키는 데 도움이됩니다.
관련 태그:
mysqli