ブール値(TRUE
)を表すためにBit(1)フィールドを使用しています / FALSE
。
データベースクライアントは、ビットフィールド(1ビットより大きくなる可能性があります)を、1文字がオクテットを表す文字列にマップします。
ord()
を使用して、Bit(1)フィールドをPHP文字列として使用するだけではありません。 文字列を単一のオクテットとして扱うように機能します:
if (ord($Site_Approved)) {
...
}
$Site_Approved
は使用できません 文字列であり、常にTRUE
と評価されるためです。 最初のビットが設定されているかどうかに関係なく。
または、SQLクエリのデータベース値をすでに10進数にキャストすることもできます。これは、探しているものである可能性があります。
s.Site_Approved+0 AS Site_Approved
0から1の範囲の10進値は、PHPのブール値と非常によく似た動作をします(タイプを共有せず、残りは同じです)。