ホームページ >データベース >mysql チュートリアル >PDO が MySQL の BIT(1) 列に 0 ではなく 1 を挿入するのはなぜですか?
Bit(1) フィールドでの PDO ステートメントの挿入異常
PDO プリペアド ステートメントを使用して bit(1) フィールドに値を挿入すると、予期せぬ結果が発生します。データベースは、意図した値 0 の代わりに 1 をテーブルに格納します。
この異常は、MySQL の BIT カラムのバイナリの性質が原因で発生します。数値として分類されているにもかかわらず、バイナリ型として扱われるため、特定のクライアント ライブラリとの互換性の問題が発生します。
TINYINT(1) を使用した解決策
この問題を回避するには場合は、代わりに TINYINT(1) 列に切り替えることを検討してください。この代替データ型は、PDO や他のクライアント ライブラリとの互換性の問題を排除しながら、BIT(1) と同様のストレージ要件を提供します。列の型を変更することは現実的ではありません。別の解決策としては、bindValue を PDO::PARAM_INT 型のヒントとともに使用する必要があります。このアプローチにより、PDO は値を整数として扱うようになり、挿入異常が解決されます。
サンプル コード
この回避策により挿入の問題が解決される可能性があることに注意してください。ただし、互換性の強化と潜在的なパフォーマンス上の利点を得るために、TINYINT(1) に移行することをお勧めします。以上がPDO が MySQL の BIT(1) 列に 0 ではなく 1 を挿入するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。