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'; ?>