PHP 프로그래밍에서 MySQLI Extension은 MySQL 데이터베이스에 액세스하는 데 사용되며 SQL 쿼리를 수행하기위한 많은 기능을 제공합니다. MySQLI_STMT :: $ ERROR는 SQL 문 실행 중에 발생하는 오류 정보를 얻기 위해 MySQLI 확장에서 매우 중요한 기능입니다. 이 기사는 데이터베이스 작업에서 MySQLI_STMT :: $ 오류 기능을 사용하는 방법을 보여주고 오류 처리 기술을 논의하는 학습 사례를 작성합니다.
데이터베이스 작업을 수행 할 때, 특히 사용자 입력을 처리 할 때 모든 종류의 오류가 발생할 수 있습니다. mysqli_stmt :: $ 오류 함수는 SQL 문 실행과 관련된 오류 정보를 캡처하는 메소드를 제공합니다. 마지막 SQL 문 실행 중에 발생한 오류에 대한 설명이 포함 된 문자열을 반환합니다.
public string mysqli_stmt::$error;
반환 값 : SQL 문이 실행될 때 오류 메시지를 나타내는 문자열. 오류가 발생하지 않으면 빈 문자열이 반환됩니다.
MySQLI_STMT :: $ 오류를 통해 MySQL 쿼리에서 오류를 잡고 처리하는 방법을 보여주는 간단한 PHP 예제를 작성합니다.
<?php
// 데이터베이스에 연결하십시오
$host = 'localhost';
$user = 'root';
$password = '';
$dbname = 'test_db';
$conn = new mysqli($host, $user, $password, $dbname);
// 데이터베이스 연결을 확인하십시오
if ($conn->connect_error) {
die("연결이 실패했습니다: " . $conn->connect_error);
}
// 데이터 삽입 SQL 쿼리 문
$sql = "INSERT INTO users (name, email) VALUES (?, ?)";
// 사용 prepare() 기능 준비 SQL 성명
$stmt = $conn->prepare($sql);
// 检查성명是否준비하다成功
if (!$stmt) {
die("준비하다 SQL 성명失败: " . $conn->error);
}
// 바인딩 매개 변수
$name = 'John Doe';
$email = '[email protected]'; // 사용 gitbox.net 메일 도메인 이름으로
$stmt->bind_param("ss", $name, $email);
// 구현하다 SQL 질문
if (!$stmt->execute()) {
// 如果구현하다失败,출력 오류 메시지
echo "구현하다질문时出错: " . $stmt->error;
} else {
echo "데이터 삽입이 성공적으로 삽입됩니다!";
}
// 연결을 닫으십시오
$stmt->close();
$conn->close();
?>
데이터베이스 연결 : 먼저 MySQL 데이터베이스에 연결됩니다. 연결이 실패하면 Die ()를 사용하여 연결 오류 메시지를 출력하고 실행을 종료하십시오.
준비 SQL 문화 : repay () 함수를 사용하여 SQL 문을 준비합니다. 준비 과정에서 오류가 발생하면 $ conn-> 오류를 사용하여 MySQL 연결 수준에서 오류를 출력하십시오.
바인드 매개 변수 : bind_param () 함수를 통해 SQL 문에서 파라미터를 바인딩합니다. 여기서 우리는 이름 과 이메일을 매개 변수로 전달합니다.
쿼리 실행 : SQL 문을 실행할 때 오류가 발생하면 mysqli_stmt :: $ 오류를 사용하여 오류 정보를 캡처하고 출력합니다.
연결 : 작업이 완료된 후 STMT 및 데이터베이스 연결을 닫으십시오.
캡처 준비 오류 : SQL 문을 준비 할 때 구문 오류 또는 기타 문제가 있으면 repay () 함수가 False를 반환하고 Conn-> 오류를 통해 오류 정보를 얻을 수 있습니다.
캡처 실행 오류 : SQL 문을 실행할 때 오류가 발생하면 execute () 함수는 false를 반환하고 mysqli_stmt :: $ 오류에 오류 설명이 포함됩니다. 이런 식으로, 우리는 즉시 오류에 대해보고하고 해당 조치를 취할 수 있습니다.
로깅 : 프로덕션 환경에서 보안을 보장하기 위해 페이지에 직접 출력하는 대신 오류 메시지를 로그 파일에 로그인하는 것이 좋습니다.
트랜잭션을 사용하면 여러 SQL 문이 관련 될 때 데이터의 일관성을 보장 할 수 있습니다. 쿼리가 실패하면 일부 업데이트가 성공하고 다른 부품이 실패하지 않도록 트랜잭션을 롤백 할 수 있습니다.
<?php
$conn->begin_transaction();
try {
// 구현하다多个 SQL 성명
$stmt1 = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt1->bind_param("ss", $name, $email);
if (!$stmt1->execute()) {
throw new Exception("구현하다插入用户时出错: " . $stmt1->error);
}
$stmt2 = $conn->prepare("UPDATE users SET status = ? WHERE email = ?");
$stmt2->bind_param("ss", $status, $email);
if (!$stmt2->execute()) {
throw new Exception("구현하다更新用户状态时出错: " . $stmt2->error);
}
// 거래를 제출하십시오
$conn->commit();
} catch (Exception $e) {
// 오류가 발생하는 경우,트랜잭션을 롤백하십시오
$conn->rollback();
echo "거래에 실패했습니다: " . $e->getMessage();
}
// 연결을 닫으십시오
$conn->close();
?>
트랜잭션 : Begin_Transaction ()을 사용하여 트랜잭션을 시작하여 일련의 운영이 성공하거나 실패하도록합니다.
오류 캐치 : 시도 캐치 문을 사용하여 예외를 포착합니다. SQL 오류가 발생하면 트랜잭션을 롤백하고 예외를 통해 특정 오류 정보를 던집니다.
Commit 또는 Rollback : 모든 작업이 성공하면 Commit ()를 사용하여 거래를 커밋합니다. 오류가 발생하면 Rollback ()을 사용하여 트랜잭션을 롤백하십시오.
MySQLI_STMT :: $ 오류 함수는 MySQL 데이터베이스 작업에서 중요한 역할을 수행하여 개발자가 SQL 문 실행의 오류를 신속하게 식별하고 처리 할 수 있도록 도와줍니다. 실제 애플리케이션에서는 오류 처리 기술을 최대한 활용하고 오류 정보를 캡처하고 기록하며 시스템의 안정적인 작동을 보장해야합니다.
또한 트랜잭션 처리 및 오류 캡처 메커니즘을 통해 데이터베이스 작업의 무결성과 일관성을 보장하여 시스템의 신뢰성을 향상시킬 수 있습니다.