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