PHP를 사용하여 MySQL과 상호 작용할 때 MySQLI Extension은 MySQLI :: STMT_INIT가 전처리 명령문 개체를 초기화하는 데 사용되는 일반적인 기능 인 전처리 문을 실행하는 편리한 방법을 제공합니다. 그러나 NULL 값은 MySQL 및 PHP에서 특수 처리 방법을 갖기 때문에 개발자는 데이터베이스에서 NULL 값을 처리 할 때 몇 가지 과제에 직면 할 수 있습니다.
먼저, mysqli :: stmt_init는 mysqli_stmt 객체를 초기화하는 데 사용되는 함수이며 mysqli_stmt 인스턴스를 반환합니다. SQL 주입 공격을 방지하고 쿼리 효율성을 향상시키는 데 도움이되는 전처리 명세서를 작성하고 실행하는 데 종종 사용됩니다.
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
$stmt = $mysqli->stmt_init();
?>
mysqli :: stmt_init 에 의해 생성 된 mysqli_stmt 객체는 bind_param 함수를 사용하여 입력 매개 변수를 바인딩하는 데 사용될 수 있습니다. 바인딩 매개 변수의 경우 개발자는 매개 변수 유형을 지정해야하며 공통 유형은 다음과 같습니다.
나는 정수를 나타냅니다
D는 부동 소수점 번호를 나타냅니다
s는 문자열을 의미합니다
B는 이진 데이터를 나타냅니다
경우에 따라 파라미터 값이 NULL 일 수 있으며 현재 특별한 처리가 필요합니다.
MySQL에서 NULL 은 특별한 값이므로 NULL을 데이터베이스에 직접 전달할 때주의해야합니다. 기본적으로, bind_param을 사용할 때, 매개 변수 값이 null 이면 SQL null 로 자동 변환되지 않습니다. BIND_PARAM 을 통해 특별 처리를 수행해야합니다.
레코드를 삽입해야한다고 가정하고 일부 필드에는 널 값이 있다고 가정합니다. 바인딩 매개 변수 인 경우 필드의 값이 NULL 인 경우 BIND_PARAM을 사용할 때 NULL 이 전달되고 유형 이 I , D 또는 S 로 설정되어 있고 추가 변수는 파라미터가 NULL 인지 명시 적으로 표시하는 데 사용됩니다.
<?php
// 연결을 초기화하십시오
$mysqli = new mysqli("localhost", "user", "password", "database");
// 전처리 진술을 만듭니다
$stmt = $mysqli->stmt_init();
// 준비하다SQL질문
$sql = "INSERT INTO users (name, age, email) VALUES (?, ?, ?)";
if ($stmt->prepare($sql)) {
$name = "John Doe";
$age = null; // NULL 값
$email = "john.doe@m66.net";
// ~을 위한 NULL 값使用特殊绑定
$stmt->bind_param("sis", $name, $age, $email);
// 执行질문
$stmt->execute();
}
?>
bind_param 에서 null 값을 올바르게 전달하려면 PHP는 널 매개 변수를 지원하지만 문자열 및 정수 ( i ) 등과 같은 특정 데이터 유형으로 제한됩니다. NULL 값의 경우 함수로 전달되고 유형을 지정 해야하는지 확인해야합니다.
<?php
// 예:거래하십시오 NULL 값的代码
$null_value = null;
$stmt->bind_param("s", $null_value);
$stmt->execute();
?>
가변 유형 NULL을 전달할 때 : NULL이 NULL을 통과 할 때 해당 SQL 유형과 일치하는지 확인하십시오. 예를 들어, 필드가 정수 유형 인 경우 bind_param 의 유형은 i 여야합니다.
ISSET ()을 사용하여 결정 : ISSET ()을 사용하여 변수가 널 여부를 결정하여 다른 상황에 따라 결합 값을 설정할 수 있습니다.
<?php
$age = null;
if (isset($age)) {
$stmt->bind_param("i", $age);
} else {
$stmt->bind_param("i", $null_value);
}
?>
mysqli :: stmt_init 및 bind_param을 사용할 때는 null 값을 처리하려면 특별한주의를 기울여야합니다. NULL 값을 올바르게 전달하고 적절한 SQL 유형과 일치하는 것이 중요합니다. 치료하지 않으면 쿼리 실패 또는 바람직하지 않은 동작이 발생할 수 있습니다. 이 기사를 도입함으로써 실제 개발에서 널 값을 올바르게 처리하는 데 도움이되기를 바랍니다.