sql >> データベース >  >> RDS >> Mysql

PHP PDO Bit(1)が間違ったデータ型を返す

    ブール値(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のブール値と非常によく似た動作をします(タイプを共有せず、残りは同じです)。




    1. Node.jsでMySQL(ORMなし)をどのようにモックしますか?

    2. Mysql接続がローカルホストで拒否されました

    3. mysql-列名としてキーワードを使用する場合のエラー1064(42000)

    4. ストアドプロシージャ内からの結果セットへのアクセスTransact-SQLSQLServer