12

現在、MySQL データベースの値Tinyint(1)を示すために使用しBooleanていますが、これはあまり好きではありません。では、どのようにしてデータベースBooleanに値を保存および取得できますか?MySQLPHP

WHERE句でそれを使用する方法と、INSERT, UPDATEクエリで値を適切に割り当てる方法は?

PHPに戻すと、それはTRUE、、、trueまたは単純1に、で確認する場合は===? です。

また、 からTinyint(1)に移行する際に問題が発生したことはありますBOOLEANか?

前もって感謝します。:)

アップデート:

Tinyint(1)と同じであることはわかっていますが、 の代わりBooleanにデータ型に取り組みたいです。それが私が質問をしている理由です。BooleanTinyint(1)

4

2 に答える 2

22

MySQL にはブール型のデータ型がありません。Tinyint(1) はかなり近いです。これを PHP で扱うのは簡単です。

If (1) echo 'true'; // is the same as if (true)
// Just as
if (0) echo 'false'; // is the same as if (false)

そして、本当にブール値が必要な場合は、次のことができます

// $mysql_data is tinyint value from db
$boolean = $mysql_data ? true : false;
// Now you have your boolean as $boolean
于 2012-09-30T11:27:24.243 に答える
4

ブール値では、使用しないでください- 値は既にブール値です (関数で のよう=== FALSEに使用する必要がない限り)。値はブール値です - 技術的には整数ですが、PHP は動的言語なので問題ありません。===strpos()

関数を考えてみましょうpreg_match()- 一致の数 (整数) を返します。

それを書いた方がいいですか?

if (preg_match('/\bregexp?\b/', $variable) === 1)

またはその?

if (preg_match('/\bregexp?\b/', $variable))

明らかに、明示的な方法を使用しない=== 1方が優れています。一致するものが 0 かどうかではなく、一致するかどうかを尋ねます。また、その方が安全だと思うなら=== 1、そうしないのはなぜ=== 1 === TRUEですか?

もちろん、(bool)orを使用して値をブール値に変換することもできます!!

また、C や Perl などの特定の言語では、ブール値と数値の間に違いはありません。それだけで機能します。

于 2012-09-30T11:22:26.820 に答える