>  기사  >  데이터 베이스  >  PDO가 MySQL의 BIT(1) 열에 0 대신 1을 삽입하는 이유는 무엇입니까?

PDO가 MySQL의 BIT(1) 열에 0 대신 1을 삽입하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-04 11:46:41936검색

Why Does PDO Insert 1 Instead of 0 into a BIT(1) Column in MySQL?

Bit(1) 필드의 PDO 문 삽입 이상

PDO 준비된 문을 사용하여 bit(1) 필드에 값을 삽입할 때, 예상치 못한 결과가 발생합니다. 의도한 0 값 대신 데이터베이스는 테이블에 1을 저장합니다.

이러한 예외는 MySQL의 BIT 열의 바이너리 특성으로 인해 발생합니다. 숫자로 분류됨에도 불구하고 바이너리 유형으로 처리되어 특정 클라이언트 라이브러리와 호환성 문제가 발생합니다.

TINYINT(1)

이 문제를 방지하려면 , 대신 TINYINT(1) 열로 전환하는 것을 고려해 보세요. 이 대체 데이터 유형은 BIT(1)와 유사한 저장 요구 사항을 제공하는 동시에 PDO 및 기타 클라이언트 라이브러리와의 호환성 문제를 제거합니다.

bindValue를 PDO::PARAM_INT와 함께 사용

If 열 유형을 변경하는 것은 불가능합니다. 대체 솔루션은 PDO::PARAM_INT 유형 힌트와 함께 바인드값을 사용하는 것입니다. 이 접근 방식은 PDO가 값을 정수로 처리하도록 강제하여 삽입 예외를 해결합니다.

예제 코드

<code class="php">$pdo = new PDO("connection string etc");
$statement = $pdo->prepare('INSERT INTO `test` (SomeText,TestBool) VALUES (:someText,:testBool)');
$statement->bindValue(':someText', "TEST");
$statement->bindValue(':testBool', 0, PDO::PARAM_INT);
$statement->execute();</code>

이 해결 방법을 사용하면 삽입 문제가 해결될 수 있습니다. , 향상된 호환성과 잠재적인 성능 이점을 위해 TINYINT(1)로 전환하는 것이 좋습니다.

위 내용은 PDO가 MySQL의 BIT(1) 열에 0 대신 1을 삽입하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.