현재 프로젝트에서 데이터베이스에 bitfield 열을 구현하고 있습니다. 50 비트이지만 PHP에서 만든 비트 필드를 제대로 삽입하지 않는 것 같습니다. 이것은 리터럴 쿼리입니다 (PHP와 phpMyAdmin에서 모두 제출하려했습니다).MySQL 쿼리가 BIT (50) 비트 필드를 제대로 삽입하지 않는 이유
INSERT INTO features (title, category_id, bitnum)
VALUES ("a6", "0", b'00000000000000000000000000100000000000000000000000')
그러나 어떤 이유에 phpMyAdmin과 PHP 출력이되는 값 : 나는 그것을 출력하는 SELECT 쿼리에 BIN (bitnum)를 사용하여 bitnum 열을 선택하도록 선택하는 경우, 지금
00001100110011100000111000001101100011000000111000
올바른 값. 그러나이 작업을 진행하기 전에 실제로이 작업을 수행하고 있는지 알 필요가 있습니다 (나중에 플래그와 비교하여 열을 확인해야하기 때문에). 중간에 단 하나의 1을 가지고있는 첫 번째 비트 필드가 0과 1의 이상한 엉망이되어 지금 당장 나에게 이해가 가지 않는 것은 당연한 것처럼 보입니다.
Google에서 주제에 대해 아무것도 찾지 못했습니다. BIT 열은 64 비트까지 지원합니다.
미리 감사드립니다.
나는 비트 솔루션을 삭제하고 대신 int (실제로 bigint)를 사용하기로 결정했습니다. "+0"을 추가하면 MySQL이 올바르게 처리하도록 강제 할 것입니다.또한 공유 한 기사는 좋은 가치 인 것 같습니다. BIT는 분명히 최적의 방법이 아닙니다. 그리고 비트 AND는 숫자 값에 대해서도 잘 작동합니다. 그런 생각을하지 못했습니다. 그러나 완벽한 의미입니다. 시간 내 주셔서 감사합니다. –