MySQLのtinyintのカラムにbool値を入れた場合
2024/02/25
他所のシステムに携わることがあり中身を色々見ているとMySQLでtinyint(1)のカラムがあり、PHP側からbool値で格納しているというケースがあった。
tinyintは数値が入るものと認識していたのでよく分からなかったんだけど、以下テストすると問題なく動くようだった。
テスト内容
//テーブル作成
CREATE TABLE `tinyint_test` (
`flg` tinyint(1) NOT NULL,
`ymd` timestamp NOT NULL
)
//テーブル構造
+-------+------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+-------------------+-----------------------------+
| flg | tinyint(1) | NO | | NULL | |
| ymd | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+------------+------+-----+-------------------+-----------------------------+
//インサートテスト
INSERT INTO tinyint_test
(flg)
VALUES
(true),
(false),
(1),
(0),
('1'),
('0')
//テスト結果
+-----+---------------------+
| flg | ymd |
+-----+---------------------+
| 1 | 2015-12-15 22:57:09 |
| 0 | 2015-12-15 22:57:09 |
| 1 | 2015-12-15 22:57:09 |
| 0 | 2015-12-15 22:57:09 |
| 1 | 2015-12-15 22:57:09 |
| 0 | 2015-12-15 22:57:09 |
+-----+---------------------+
所感
trueは1に、falseは0になるというのは知らなかったので勉強になった。
関連記事
-
-
PHPでmysqli関数使用時のプリペアドステートメントの利用方法
PHPでMySQLを扱う際はmysqli関数を、エスケープの際はreal_esc ...
-
-
MySQLで歯抜けになっているint型の数値を取得する
MySQLで歯抜けになっているシーケンス番号を 取得したいケースがあった。 ■ソ ...
-
-
MySQLのトリガーを使用して特定のテーブルの操作を行った際に別テーブルにログを残す方法
MySQLにトリガーという機能があるらしくどのようなものか調べたところ、事前に「 ...
-
-
MySQLでデータベース単位とテーブル単位のデータサイズ(容量)の調べ方
VPSの各種ファイルを整理している際に「MySQLも不要なデータを削除すればいい ...
-
-
PHPからMySQLにシリアライズしたデータを格納
アンケートフォームみたいなのがあって、 今後も定期開催し、尚且つ質問内容は増減す ...