【发布时间】:2016-01-15 06:07:59
【问题描述】:
我在使用 PHP 和 PDO 的 Windows 环境中使用 MySQL 的 BIT 数据类型没有任何问题。我使用的唯一技巧是将其强制转换为 int。
但是当我将代码上传到 Linux 服务器时,我无法看到那些 BIT 值:我得到的是一个方形字符。
搜索此内容后,我找到了 Marc B 的 this answer,再加上 Stanimir Stoyanov 的评论,我最终在 Windows 和 Linux 上都这样做了,效果很好
展示代码
//linux OR windows
$display = ($value_from_db === chr(0x01) || $value_from_db == 1) ? 1 : 0;
保存代码
//both platforms
$value_for_db = ($display == 1) ? 0x01 : 0x00;
所以我的问题是:
- 这两个平台是否确实以不同的方式处理此数据类型?
- 还是特定的程序问题? (php, apache, mysql)
- 这是解决此问题的正确方法吗?也许还有一个 接近
Windows 7:PHP 5.6.10、Apache 2.4.12、MySQL 5.6.26
Debian Wheezy:PHP 5.5.30、Apache 2.2.22、MySQL 5.6.25
【问题讨论】:
-
试试这个
INSERT INTO tab1 (bit_field) values (b?),你可以绑定boolean或者int值。 -
您可能希望包含用于从数据库中保存和检索内容的代码。 PHP 的类型非常松散,所以仅仅因为您将某些内容设置为整数并不意味着它会以这种方式传递给数据库。
标签: php mysql linux windows type-conversion