MySQL select b'1'根据环境返回整数1或ASCII字符1

gom*_*gom 8 php mysql

在我的家用电脑上

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

返回字符串"1".

但是当在webserver上托管时,它返回具有ASCII字符1的字符串.

Doc确实说 -

位值以二进制值的形式返回.要以可打印的形式显示它们,请添加0或使用转换功能,如BIN().

但是在我的本地机器上,它仍然返回"1",而我没有做任何转换.

如何在我的Web服务器上具有相同的行为?

如果我得到相同的行为,那么我不必转换我的PHP代码

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

... select bit1_field+0 as bit1_field ...
Run Code Online (Sandbox Code Playgroud)

哪里bit1_field是类型bit(1).

Syl*_*ter 2

您似乎在机器上使用了两种不同的驱动程序。有两个,php5-mysqlndphp5-mysqlWebsite Factor在四月底写了关于 BIT 字段的不同行为的文章,我也有几台具有相同版本但不同驱动器的机器。我可能是因为从早期版本升级时驱动程序没有更改,但是当安装 php >5.4 时,它会php5-mysqlnd默认安装。这是有关差异的 MySQL 页面