데이터베이스 작업에 PHP의 MySQLI 확장 기능을 사용하는 경우 데이터베이스 쿼리를 실행할 때 오류가 발생하는 것이 불가피합니다. 특히 MySQLI_STMT_EXECUTE ()를 사용하여 전처리 문을 실행할 때, 때로는 오류 메시지가 오류의 특정 원인을 직접 설명하지 않습니다. 현재 MySqli :: $ errno 속성을 사용하여 오류를 찾는 데 도움이됩니다.
mysqli :: $ errno는 PHP의 MySQLI Extension의 속성으로, 마지막 MySQL 작업에서 발생한 오류 코드를 나타냅니다. mysqli_stmt_execute ()를 실행할 때 오류가 발생하면 mysqli :: $ errno 를 통해 자세한 오류 코드를 얻을 수 있으므로 개발자가 문제를 신속하게 찾을 수 있습니다.
mysqli :: $ errno 및 mysqli :: $ error는 mysql 데이터베이스 작업의 예외를 더 잘 이해하는 데 도움이 될 수 있습니다.
오류의 일반적인 원인에는 다음이 포함될 수 있습니다.
SQL 문의 구문 오류.
불일치 한 데이터 유형의 바인딩과 같은 파라미터 바인딩 오류.
데이터베이스 연결 문제.
데이터베이스 액세스 권한이 충분하지 않습니다.
이러한 오류는 때때로 반환 된 부울 값 또는 mysqli :: $ 오류 에 의해 유발되지만 문제를 정확히 찾아서 mysqli :: $ errno를 결합하여 오류의 오류 코드를 얻을 수 있습니다.
mysqli_stmt_execute () 가 반환 한 부울 값을 사용하여 실행이 성공했는지 판단 할 수 있습니다. False가 반환되면 실행이 실패했음을 의미합니다. 현재 MySqli :: $ errno 및 mysqli :: $ 오류를 통해 자세한 오류 정보를 얻을 수 있습니다.
<?php
// 데이터베이스 연결을 만듭니다
$mysqli = new mysqli("localhost", "username", "password", "database");
// 연결이 성공했는지 확인하십시오
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
// 준비하다 SQL 성명
$stmt = $mysqli->prepare("INSERT INTO users (username, email) VALUES (?, ?)");
// 바인딩 매개 변수
$username = 'testuser';
$email = 'testuser@m66.net';
$stmt->bind_param("ss", $username, $email);
// 执行성명
if (!$stmt->execute()) {
echo "오류 코드: " . $stmt->errno . "<br>";
echo "오류 메시지: " . $stmt->error . "<br>";
} else {
echo "성공적으로 삽입하십시오!<br>";
}
// 关闭성명和连接
$stmt->close();
$mysqli->close();
?>
데이터베이스 연결 : 먼저 New MySQLI ()를 통해 데이터베이스 연결을 생성하고 연결이 성공했는지 확인합니다.
준비 SQL 문 : repary () 메소드를 사용하여 사용자 데이터를 삽입하기 위해 SQL 삽입 문을 준비합니다.
바인드 매개 변수 : BIND_PARAM () 메소드를 통해 삽입 된 매개 변수를 바인딩하여 올바른 데이터 유형을 보장합니다.
명령문을 실행하고 오류를 확인하십시오 : mysqli_stmt_execute () 메소드를 실행할 때 False가 반환되면 실행 오류가 발생했음을 의미합니다. $ stmt-> errno를 통해 오류 코드와 $ stmt-> 오류 를 통해 오류 설명을 얻을 수 있습니다.
위 코드에서 실행 중 오류가 있으면 오류 코드 및 오류 메시지를 출력하여 문제를 신속하게 찾을 수 있습니다.
연결 닫기 : 마지막으로 전처리 문과 데이터베이스 연결을 닫습니다.
mysqli :: $ errno 에서 얻은 오류 코드는 MySQL 데이터베이스에서 반환 한 표준 오류 코드입니다. 몇 가지 일반적인 오류 코드는 다음과 같습니다.
1045 : 사용자에 대한 액세스 거부 - 불충분 한 데이터베이스 액세스.
1064 : SQL 구문 -SQL 구문 오류에 오류가 발생합니다 .
1062 : 중복 입력 - 고유 한 제약 조건을 위반하여 중복 데이터를 삽입합니다.
2002 : 로컬 MySQL 서버에 연결할 수 없습니다 - MySQL 서버에 연결할 수 없습니다.
이 오류 코드는 데이터베이스 작동 실패 이유를 명확히하는 데 도움이됩니다.
mysqli :: $ errno 속성을 통해 데이터베이스 작업에서 오류 코드를 신속하게 얻을 수 있으며 MySQLI :: $ 오류 의 오류 정보와 결합하여 문제의 근본 원인을보다 쉽게 찾을 수 있습니다. mysqli_stmt_execute ()에서 오류가 발생하면 먼저 반환 값을 확인하고 오류 코드를 통해 문제를 더 문제로 해결하여 개발 효율성을 향상시키고 디버깅 시간을 줄입니다.