• ベストアンサー

DBに0か1を格納する場合

カラムについてご質問が御座います。 "complete"か"uncomplete"をDBに値を変えて挿入する場合、 カラムはENUMでインデックスを利用して"complete"は1、"uncomplete"は2としてphp側から格納するのがよいのか、カラムをTINYINT(1)やCHAR(1)でDBに0か1で格納すればよいのか、それとも別の方法がよいのか分かりません。 ご指導頂けると幸いです。 mysql Ver 14.14 Distrib 5.1.44 PHP Version 5.3.2

質問者が選んだベストアンサー

  • ベストアンサー
noname#184105
noname#184105
回答No.1

自分の場合は、tinyintにtrue(1),false(0)を直接格納しています。 そうすることで、取り出すときもカラムの値をboolvalで解釈すればスムーズに受け取れます。 charですと、誤った文字列を格納してしまうバグの温床になるのでやめたほうが良いと考えます。

okmt1007
質問者

お礼

やはりTINYINTがよいのでしょうか、、 早速のご回答ありがとうございました。 是非参考にさせて頂きます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • char int の検索速度

    ラジオボタンの値を格納するカラムがあります。 tinyint(1),CHAR(1)では 数万件溜まると検索速度は大きく異なり tinyint(1)にすべきでしょうか? ぱっと見、CHARの方が分かりすいので 悩んでいます・・

    • ベストアンサー
    • MySQL
  • WebサーバとDBサーバを用いてファイルを格納したいです、教えてください。

    PHPとMySQLを使用して、DBにバイナリファイルを格納する方法を考えています。WEB上からバイナリファイルをアップロードしてDBに格納し、後でダウンロードできる仕組みを作りたいです。使用しているサーバはfedora11です。 PHPとDBの連携はできたのですが、バイナリデータの格納方法は探しても見つからなくて困っています。誰か教えてください。

    • ベストアンサー
    • MySQL
  • 2つのDBにある値の差分値で並び替えたい

    SQLite3とPHPを使っているのですが、他のデータベースでも同じだと思うので一般的な質問になりますがよろしくお願い致します。 SELECTでデータを並び替えて抽出するにはORDER BYを使いますが、例えば2つのデータベースがあってそれぞれのカラムにある数値同士の差を降順、昇順で並び替えるにはどのような方法があるのでしょうか? 「データベースDB1のvalueカラムにある値」 - 「データベースDB2のvalueカラムにある値」 = 差分 この差分を降順、昇順で並び替えて取得したいのですが、このような場合は一度配列に格納しておいて、その配列を並び替えることになるのですか? それともデータベースのクエリーでそのようなことが可能なのでしょうか? もう一つお聞きしたいのは、「同じデータベース内での2つのカラムの値の差分で並び替え」したい場合もお教えください。 どうぞよろしくお願い致します。

  • DBのFLOATカラムに格納した値の取得

    お世話になります。 MySQLのFLOATのカラムに9999999のような数値を格納すると、x.xxxxe+xxxのような値になってしまいます。 これを普通にselectで取得すると、x.xxxxe+xxxのままの数値なのですが、これを格納時点の999999のような数値に整形する方法はあるでしょうか? また、879.823928のような少数の値もよく判らないx.xxxxe+xxxのような値になっております。 この場合の整形方法もありませんでしょうか? ご教授ください。よろしくお願い致します。

    • 締切済み
    • PHP
  • DBの書き込み

    フォームのテキストタイプの値をDBに書き込む事はできるのですが、コンボボックスの値をDBに書き込む事ができなくて困っています 環境 php 4.2.3 mysql 3.23 windows 2000 ソース(一部割愛) <form action="1.phtml"> <input type="text" name="age"> <select name="work" > <option value="1" selected>会社員 <option value="2">その他 </selected> <input type="submit"> </form> [1.phtml] DBの書き込みの部分 mysql_connect($SERVER,$USER,$PASSWORD); mysql_select_db(testDB); mysql_query("insert into test(age,work) values('$age','$work')"); AGEの部分は書き込みできているのですが、WORKの値は書き込みできていません。 DBの設定は両方ともCHAR(10)にしています

    • ベストアンサー
    • PHP
  • DBに格納された画像データを縮小して表示したい

    PHP5+MySQL5です。 DB内のBLOBカラムに、Base64エンコードされた画像データが格納されています。 これを、サムネイル用に縮小して表示したいのですが、widthとheightで小さくするのではなく、ファイルサイズも小さくしてブラウザに渡したいと考えています。 (小さくした画像は保存しません) そこで、DBから取得した画像データを「imagecopyresampled」で再サンプリングしつつ小さくしたいと思いましたが、画面には何も表示されませんでした。 以下、ソースを簡潔に記載します。 $db_img = "DBから画像データを取得"; //600x600の画像 $old_img = base64_decode($db_img); $new_img = imagecreatetruecolor(200,200); //200x200のサムネイル画像を作成 $thumbnail = imagecopyresampled($new_img,$db_img,0,0,0,0,200,200,600,600); print $thumbnail; $old_imgの処理が間違っているのだろうと思うのですが、どのように処理すればいいのかわかりませんでした。 この場合、どのように処理すればいいのか教えていただけないでしょうか? 宜しくお願いします。

    • 締切済み
    • PHP
  • mySQLのカラムの並び順によるデータ領域確保について

    mySQLのカラムの並び順によるデータ領域確保について http://d.hatena.ne.jp/yarb/20090519/p2 のような4バイト単位で領域を確保するのでしょうか? 同じテーブルでも並び順は、4バイト単位を意識して、 パターン1で作成した方が効率は良いのでしょうか? ■パターン1 tinyint(1) tinyint(1) tinyint(1) char(1) int int int ■パターン2 tinyint(1) int tinyint(1) int char(1) int tinyint(1)

    • ベストアンサー
    • MySQL
  • 異なるカラムに値がまとめて格納されているランキング

    異なるカラムに値がまとめて格納されている場合に、「対応する値を足した結果」の合計降順でランキング表示させる方法を教えてください ※DB … MySQL ※不正解0、正解1 レコードA ・「正解不正解カラム」0,1,1 ・「問題番号カラム」 2,1,3 レコードB ・「正解不正解カラム」0,1,1,1,1,1,0,1,1,0 ・「問題番号カラム」 9,1,3.4.5.8.6.7.2.10 こういうレコードがたくさんある時、 正解数が多い問題番号順に並べるにはどうしたらよいでしょうか? (結果イメージ) ・1位 … 問題番号10 … 正解数10人 ・2位 … 問題番号2 … 正解数8人 ・3位 … 問題番号5 … 正解数4人

    • ベストアンサー
    • PHP
  • mysql_select_dbの戻り値

    PHPからMySQLを使用しています。 リファレンス等を見ると、DB接続の際mysql_select_dbは成功時に0、失敗時にそれ以外の値を返すらしいのですが、現在問題なくPHPからDBを利用できているにもかかわらず、mysql_select_dbの戻り値が1になっています。 これは何か内部でエラーが起こっているということなのでしょうか? 起こっているとしたら、どのように調査すればいいのでしょうか? アドバイスをお願いいたします。

    • ベストアンサー
    • MySQL
  • DB+CSV

    今、仕事を受注してPHP+MySQLで情報サイトの開発を行っているのですが お客さんが結構頻繁に仕様を変更を要求してきたり ・共通項目は20カラムほど ・非共通カラムは60~70カラム 計80~90(100)カラムx7種類って感じになりそうです。 でこの非共通カラム部分をCSV形式で管理するのはどうかな?っと思ったのですが (正規化して共通部分とそうでない部分をわけろって言われそうですが) デーブル設計を 主キーカラム(オートナンバー) 共通項目Aカラム 共通項目Bカラム 共通項目Cカラム 情報タイプ(7種類ほど) CSVを格納するカラム CSV部分の設計は 「項目名(値)」って感じにそればいいかなって思いました。 (や)や仕切り部分「,」に関してユーザが入力した場合はPHP上で全角に置換してデータベースに格納 例) A(1),B(あいうえお),C(0)・・・・・・ A(0),B(かきくけこ),C(0)・・・・・・ A(0),B(たちつけと),C(1)・・・・・・ A(1),B(かきくけこ),C(0)・・・・・・ で検索時にはWhere部分を 非共通項目のカラム名をitemとしたら item like '$A(1)%' And item like '$C(0)%' って感じで検索させればいいかな?と思ったのですが ・そもそもこういう設計(DB+CSV)は駄目ですか? ・もしこういう設計でやった場合のデメリットはなんですか? ・やはり項目ごとにカラムを作った方がいいですか?

    • ベストアンサー
    • MySQL