PHP에서 MySQLI Extension은 MySQL 데이터베이스에서 작동하는 풍부한 기능을 제공합니다. mysqli_stmt :: $ error and mysqli :: errno는 개발자가 데이터베이스 작업의 문제를 포착하고 진단하는 데 도움이되는 오류 처리와 관련된 두 가지 중요한 속성입니다. 이 기사는이 두 속성의 차이점과 디버깅 효율을 향상시키기 위해 조합하여 사용하는 방법을 탐색합니다.
mysqli_stmt :: $ error는 현재 전처리 명령문 개체 ( mysqli_stmt )와 관련된 오류 메시지를 얻는 데 사용되는 속성입니다. 이 속성은 전처리 문을 실행할 때 발생하는 오류 메시지가 포함 된 문자열을 반환합니다.
예를 들어, SQL 쿼리를 실행하면 쿼리가 실패하면 mysqli_stmt :: $ error는 mysql 서버의 오류 메시지를 반환합니다.
샘플 코드 :
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// 데이터베이스 연결을 확인하십시오
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
// 준비하다 SQL 성명
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if (!$stmt) {
echo "준비하다성명失败: " . $mysqli->error;
exit;
}
// 매개 변수를 바인딩하고 실행합니다
$id = 1;
$stmt->bind_param("i", $id);
$stmt->execute();
// 실행 결과를 확인하십시오
if ($stmt->error) {
echo "실행 오류: " . $stmt->error; // 출력 상세 오류 정보
}
?>
위의 코드에서 $ stmt-> 오류는 SQL 문을 실행할 때 발생하는 오류 메시지를 얻는 데 사용됩니다. 디버깅 및 문제 해결에 매우 유용합니다.
mysqli :: errno는 마지막 MySQL 작업에 대한 오류 코드를 얻는 데 사용되는 속성입니다. 상세한 오류 정보를 반환하는 $ 오류 속성과 달리 Errno는 정수 값을 반환하여 MySQL 오류의 특정 수를 나타냅니다.
샘플 코드 :
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// 데이터베이스 연결을 확인하십시오
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
// 구현하다 SQL 질문
$result = $mysqli->query("SELECT * FROM non_existing_table");
if (!$result) {
echo "MySQL 오류 코드: " . $mysqli->errno; // 输出오류 코드
echo "MySQL 오류 메시지: " . $mysqli->error; // 출력 상세 오류 정보
}
?>
이 예에서 쿼리가 실패하면 $ mysqli-> errno는 mySQL 오류 코드를 반환합니다. 예를 들어 1146은 "테이블이 존재하지 않는다"오류를 의미하고 $ mysqli-> 오류는 "table 'database.non_existing_table'의 상세한 오류 메시지를 반환합니다.
MySQLI_STMT :: $ ERROR 와 MySQLI :: Errno가 모두 MySQL 오류와 관련이 있지만, 그들 사이에는 몇 가지 중요한 차이점이 있습니다.
mysqli_stmt :: $ error는 전처리 문 ( mysqli_stmt )의 오류 메시지이며 mysqli :: errno는 mysql 연결의 오류 코드입니다. mysqli_stmt :: $ error는 일반적으로 개발자에게 출력하는 데 사용되는 오류 메시지 문자열을 제공합니다. mysqli :: errno는 오류 코드를 반환합니다. 오류 코드는 종종 프로그램의 추가 오류 처리 및 진단에 사용됩니다.
다른 행동 범위 : mysqli_stmt :: $ 오류는 mysqli_stmt를 통해 실행 된 SQL 문에만 적용되는 반면, mysqli :: errno는 전체 데이터베이스 연결에 적용 할 수 있으며 모든 유형의 쿼리 및 작업에 적용 할 수 있습니다.
PHP 데이터베이스 코드를 디버깅 할 때 mysqli_stmt :: $ error 또는 mysqli :: errno 만 사용하면 문제를 찾는 데 도움이 될 수 있지만 두 사람을 함께 사용하면 문제의 근본 원인을 신속하게 찾는 데 도움이됩니다.
디버깅 제안 : 먼저 mysqli :: errno를 확인하여 오류 코드를 얻은 다음 mysqli_stmt :: $ error 또는 mysqli :: 오류를 사용하여 자세한 오류 정보를 얻을 수 있습니다. 이 두 가지를 결합하면 어떤 부분이 잘못되었는지 더 정확하게 결정하고 적절한 조치를 취할 수 있습니다.
결합 된 사용 예제 코드 :
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// 데이터베이스 연결을 확인하십시오
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
// 구현하다 SQL 질문
$result = $mysqli->query("SELECT * FROM non_existing_table");
if (!$result) {
echo "MySQL 오류 코드: " . $mysqli->errno . "\n"; // 获取오류 코드
echo "MySQL 오류 메시지: " . $mysqli->error . "\n"; // 获取详细오류 메시지
}
?>
위의 코드에서 먼저 mysqli :: errno를 통해 오류 코드를 가져온 다음 mysqli :: error를 통해 자세한 오류 정보를 가져옵니다. 이러한 조합은 개발자가 문제를 신속하게 진단하는 데 도움이 될 수 있습니다. 특히 오류 코드 및 오류 메시지가 서로 보완 될 때.
mysqli_stmt :: $ error는 전처리 문과 관련된 오류 정보를 얻는 데 사용되는 반면 mysqli :: errno는 데이터베이스 연결에 대한 오류 코드를 가져 오는 데 사용됩니다.
각각 다른 오류 메시지 형식을 제공하고, 전자는 문자열을 반환하고 후자는 숫자를 반환합니다.
이 둘을 사용하면 MySQL 작업을보다 효율적으로 디버그하고 문제를 신속하게 발견하고 해결할 수 있습니다.
이 두 가지 속성은 PHP 개발에서 매우 중요한 디버깅 도구입니다. 사용량을 마스터하면 디버깅 효율성을 크게 향상시키고 데이터베이스 작업의 오류를 줄일 수 있습니다.