在我的家用电脑上,
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)
。
答案 0 :(得分:2)
您似乎在机器上使用两个不同的驱动程序。有两个,php5-mysqlnd
和php5-mysql
。 Website Factor在4月下旬写了关于BIT字段的不同行为,我也有几台机器具有相同版本,但驱动器不同。我可能是因为从早期版本升级时没有更改驱动程序,但是当安装了php> 5.4时,它默认安装php5-mysqlnd
。这是MySQL page about the differences。