8

在我家的电脑上,

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

返回字符串“1”。

但是当托管在网络服务器上时,它返回具有 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

看来您在机器上使用了两个不同的驱动程序。有两个,php5-mysqlndphp5-mysql网站因素在 4 月下旬写了关于 BIT 领域的不同行为,我也有几台具有相同版本但驱动器不同的机器。我可能是因为从早期版本升级时驱动程序没有更改,但是当安装 php >5.4 时,它php5-mysqlnd默认安装。这是关于差异的 MySQL 页面

于 2013-07-04T12:19:06.870 回答