8

自宅のパソコンで、

mysql_fetch_row( mysql_query(" select b'1' ") )[0]

文字列「1」を返します。

ただし、Web サーバーでホストされている場合は、ASCII 文字 1 の文字列を返します。

ドクは言う-

ビット値はバイナリ値として返されます。印刷可能な形式で表示するには、0 を追加するか、BIN() などの変換関数を使用します。

しかし、私のローカル マシンでは、変換を行わなくても「1」が返されます。

Web サーバーで同じ動作をさせるにはどうすればよいですか?

同じ動作が得られた場合、PHP コードを次のように変換する必要はありません。

$row = mysql_fetch_row( mysql_query(" select bit1_field from .. where .. ") );
if( $row[0] === '1' ) ...;

... select bit1_field+0 as bit1_field ...

bit1_fieldタイプbit(1)です。

4

1 に答える 1

2

マシンで 2 つの異なるドライバーを使用しているようです。との 2 つがphp5-mysqlndありphp5-mysqlます。Web サイト Factorは 4 月下旬に BIT フィールドの異なる動作について書きました。私も、同じバージョンでドライブが異なる複数のマシンを持っています。おそらく以前のバージョンからのバージョンアップ時にドライバーが変更されていないためだと思いますが、php>5.4をインストールするとphp5-mysqlndデフォルトでインストールされます。違いについてのMySQLのページはこちらです。

于 2013-07-04T12:19:06.870 に答える