您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Yii addInCondition与浮点数:如何?为什么addInCondition('column',array(1.1,1.3))不起作用?

Yii addInCondition与浮点数:如何?为什么addInCondition('column',array(1.1,1.3))不起作用?

DROP TABLE IF EXISTS `prefix_test`;

CREATE TABLE IF NOT EXISTS `prefix_test` (
  `task_id` int(11) NOT NULL AUTO_INCREMENT,
  `order_id` int(11) NOT NULL,
  `step` float(6,2) NOT NULL,
  `done` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`task_id`),
  KEY `order_id` (`order_id`),
  KEY `step` (`step`),
  KEY `orderstep` (`order_id`,`step`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;


INSERT INTO `prefix_test` VALUES (1,36907,3.20,0);
INSERT INTO `prefix_test` VALUES (2,36907,3.21,0);
INSERT INTO `prefix_test` VALUES (3,37907,4.13,0);

$criteria=new CDbCriteria();
$criteria->addInCondition('order_id',array(36907));
$criteria->addInCondition('step',array(3.20));
$tests=Test::model()->findAll($criteria);


echo "Rows: ".count($tests)."<br>";
#Returns Rows: 0

在Yii日志中查询

SELECT * FROM `prefix_test` `t` WHERE (order_id=:ycp0) AND (step=:ycp1). Bound with :ycp0=36907, :ycp1=3.2

MysqL日志中的实际查询

SELECT * FROM `prefix_test` `t` WHERE (order_id=36907) AND (step='3.2')

这将解决您的问题

ALTER TABLE `prefix_test` CHANGE `step` `step` decimal(10,2) NOT NULL;

之后,您的查询返回

#Returns Rows: 1
其他 2022/1/1 18:32:49 有447人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶