2017-07-08 11 views
1

boolen文が真または偽であることを知る最も良い方法は何ですか? MYSQLデータベースでboolean/tinyint(1)型の場合のPHP if文

選択ブールた後、それはtinyint(1)を示しているが、データベース内の値が1の場合に問題があり、

私はif($var == 1)結果はfalseif($var == "1")trueである使用。

しかし、私はlocalhostで(WAMPサーバ)

if($var == 1)は、私は非常にMYSQLのバージョンの問題を混乱していtrue

のですか? ところで私はlaravelフレームワークを使用しています...

+0

localhostでも==の代わりに===を使用すると、違いが得られます。 1は整数で、 '1'は文字列です。あなたがこの問題に直面している理由です。 –

+2

'$ var == 1'がfalseであることは絶対にありません。同じvarに対して' $ var == "1" 'が真です。 http://sandbox.onlinephpfunctions.com/code/ce95da1568c82a6d98f991826802f355e2ea948e – apokryfos

+0

をチェックして、なぜ$ varのvar_dumpをしないのかを確認してください。 – Daniel

答えて

3

MySQLはあなたの問題とはほとんど関係がありませんし、laravelもありません。

phpでは、1が真、1が真、0が偽、0が偽です。したがって、このような慣習を嫌うのでなければ、if ($var) {}と書くことができます。

+0

これは良い答えです。適切な方法でこれを使いたい場合は、ツアーモデルに行き、これを追加してください:protected $ casts = ['yourColName' => 'boolean']; – Nevo

0

キャストタイプ$varint$varを割り当ててから比較します。以下の例:

$var = (int) $result['db_field_name'] // $result indicates the database value 
if($var == 1) { 

} 

確かに、これはすべてのマシンで動作します。