2011-10-25 6 views
1

チェックボックスを選択するajaxクエリからmysqlから返される値に問題があります。しかし、私はそれを働かせることができる唯一の方法は、NULLとしてmysqlの値を持つことです。しかし、毎回0または1がチェックされます。 mysqlでは、tinyint(1)に設定しました。mysqlの最適なブール値は?

+0

バグがあなたのコードではおそらくありますそのビットがこの – Icarus

+1

のためのより良いデータ型であるようです。あなたがコードを投稿した場合、それは役に立ちます。 –

+0

あなたの問題はここのデータタイプの選択にはないと思います。あなたは、あなたの質問を投稿する必要がありますし、何をしているのは、その側面のヘルプのためのデータです。しかし、あなたの質問に答えるために、tinyint(1)はenumのようなものよりも実質的に簡潔かもしれません。それはあなたが本当にやっていることに依存しています。私は小さな読み込みサイトで作業する傾向があるので、読みやすいように列挙型を使用します。私の同僚は、データが小さく移植性があるので、tinyint(1)を好む。サイトが小規模で人身売買が大量に行われていない場合は、列挙型を使用するために何かを遅らせることはありません。あなたの選択。 –

答えて

3

はTINYINT(1)の別名です。 booleanを使用することをお勧めします。
MySQLの作者は何らかの理由で処理を行います。 よりtinyintを選択する理由があると確信しています。

あなたは1バイト未満のストレージ要件を得ることはありません。

あなたは1

if $row['bool_field'] == 1 {check that box} 
else {uncheck that box} 
0

あなたのデータ型として(1)ビットを使用してみてください、私はあなたがここにBoolean valueをしたいと思います - それは、彼らは結局のために設計されているものです。いずれにしても、それは間違いなくNOT NULLと定義する必要があります。ほとんどのブール論理の状況では、そうしない限り不要なエッジケースが発生します(Ternary logicを除いて!)。

おそらく、チェック・ボックスを設定するビュー・コードは、その値がFalse(または0)ではなくキーの存在をチェックしているか、データベース問合せがこの状況に対して不適切に結合を行っていると考えられます。より詳細な説明が難しい。 MySQLのboolean

+0

私は実際の問題へのリンクを投稿しました。それは#7881998です。私は適切な値を返します:0または1しかし、彼らは0または1を真の値として使用するかどうかにかかわらず、チェックでチェックボックスに印を付け、mysqlフィールドが_NULL_チェックボックスをオンにします。 – Mont

0

使用ブールに対するチェックを行うことを確認してください。 bit(1)を使用するのは間違ったアプローチです。

read hereすることができますように、bit(1)として割り当てられたフィールドもそんなに多くのデータが、その後boolean/tinyintフィールドを扱うことができる、すなわち11111111である可能性があります。