Mysql CakePHP-获取数据,检查真/假

Mysql CakePHP-获取数据,检查真/假,mysql,cakephp,bit,Mysql,Cakephp,Bit,在我的数据库中,我的表具有以下结构: CREATE TABLE `tbl_app_versions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `app` varchar(100) DEFAULT NULL, `version` varchar(50) DEFAULT NULL, `force_update` bit(1) DEFAULT NULL, `is_active` bit(1) DEFAULT NULL, `created`

在我的数据库中,我的表具有以下结构:

CREATE TABLE `tbl_app_versions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `app` varchar(100) DEFAULT NULL,
  `version` varchar(50) DEFAULT NULL,
  `force_update` bit(1) DEFAULT NULL,
  `is_active` bit(1) DEFAULT NULL,
  `created` datetime DEFAULT NULL,
  `modified` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
请注意,“强制更新”是位。它可以是1或0

在我的代码中,我获取数据并希望查看值是1还是0。出于某种原因,CakePHP在任何一种情况下都会返回以下结果:

Array
(
    [0] => Array
        (
            [Platforms] => Array
                (
                    [id] => 1
                    [app] => ios
                    [version] => 1.0.042
                    [force_update] => 
                    [is_active] => 
                    [created] => 
                    [modified] => 
                )

        )

    [1] => Array
        (
            [Platforms] => Array
                (
                    [id] => 2
                    [app] => android
                    [version] => 1.0.041
                    [force_update] => 
                    [is_active] => 
                    [created] => 
                    [modified] => 
                )
        )
)
无论其值如何,force_update都显示相同的值。我在我的大多数表格中都使用了bit,我必须能够进行此检查

这:


在数据库中使用bit时,若字段为NULL,则返回FALSE,否则返回TRUE

因此,如果字段(1或0)中有任何值,它仍然返回TRUE

解决方案: 将字段从bit更改为tinyint。 或
在数据操作中,根据FALSE将字段设置为NULL,并根据TRUE将其设置为值。这样,每次我读取数据时,它要么为空,要么有值,然后基于此,我可以在视图中显示正确的消息。

您可以从bit切换到tinyint(1),但我认为您的if语句是错误的

试一试


empty()将错误地捕捉NULL和0为“否”,只有1为“是”。

的可能重复项
<?php echo ($value['Platforms']['force_update']) ? 'Yes' : 'No'; ?>
<?php echo ($value['Platforms']['force_update'] = TRUE) ? 'Yes' : 'No'; ?>
<?php echo ($value['Platforms']['force_update'] == TRUE) ? 'Yes' : 'No'; ?>
'1', 'ios', '1.0.042', '0', '1', NULL, NULL
'2', 'android', '1.0.041', '1', '1', NULL, NULL
<?php echo (!empty($value['Platforms']['force_update'])) ? 'Yes' : 'No'; ?>