Rumah > pangkalan data > tutorial mysql > Mengapa PDO Memasukkan 1 Daripada 0 ke dalam Lajur BIT(1) dalam MySQL?

Mengapa PDO Memasukkan 1 Daripada 0 ke dalam Lajur BIT(1) dalam MySQL?

Patricia Arquette
Lepaskan: 2024-11-04 11:46:41
asal
1006 orang telah melayarinya

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

Anomali Sisipan Penyata PDO dengan Medan Bit(1)

Apabila memasukkan nilai ke dalam medan bit(1) menggunakan pernyataan yang disediakan PDO, hasil yang tidak dijangka berlaku. Daripada nilai 0 yang dimaksudkan, pangkalan data menyimpan 1 dalam jadual.

Anomali ini timbul disebabkan sifat binari lajur BIT dalam MySQL. Walaupun dikategorikan sebagai angka, ia dianggap sebagai jenis binari, yang membawa kepada isu keserasian dengan perpustakaan pelanggan tertentu.

Penyelesaian menggunakan TINYINT(1)

Untuk mengelakkan masalah ini , pertimbangkan untuk bertukar kepada lajur TINYINT(1). Jenis data alternatif ini menawarkan keperluan storan yang serupa kepada BIT(1) sambil menghapuskan isu keserasian dengan PDO dan perpustakaan pelanggan lain.

Menggunakan bindValue dengan PDO::PARAM_INT

Jika menukar jenis lajur tidak boleh dilaksanakan, penyelesaian alternatif melibatkan penggunaan bindValue dengan pembayang jenis PDO::PARAM_INT. Pendekatan ini memaksa PDO untuk menganggap nilai sebagai integer, menyelesaikan anomali sisipan.

Kod Contoh

<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>
Salin selepas log masuk

Perhatikan bahawa sementara penyelesaian ini mungkin menyelesaikan isu sisipan , masih dinasihatkan untuk beralih kepada TINYINT(1) untuk keserasian yang dipertingkatkan dan potensi manfaat prestasi.

Atas ialah kandungan terperinci Mengapa PDO Memasukkan 1 Daripada 0 ke dalam Lajur BIT(1) dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan