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

时间:2013-07-04 06:36:08

标签: php mysql

在我的家用电脑上,

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

返回字符串“1”。

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

Doc确实说 -

  

位值以二进制值的形式返回。以可打印的方式显示它们   表单,添加0或使用转换函数,如BIN()。

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

如何在我的网络服务器上使用相同的行为?

如果我得到相同的行为,那么我不必转换我的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)

1 个答案:

答案 0 :(得分:2)

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