搜索
系统检测到您的用户名不符合规范:

M函数的BUG还是我不会用?

浏览:667 发布日期:2013年10月18日 分类:求助交流 关键字: M函数
表结构很简单一个ID,自增和一个nameCREATE TABLE IF NOT EXISTS `hd_test` (
`id` mediumint(8) unsigned NOT NULL auto_increment COMMENT '主键(自增长)',
`name` varchar(200) default '' COMMENT '名称',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='测试' AUTO_INCREMENT=1
PHP代码也很简单 M("Test")->getById(1);
$model = M("Test");
$model->name="测试";
$model->add();
当数据库中没有ID为1的的记录时
执行结果如下SHOW COLUMNS FROM `hd_test` [ RunTime:0.003417s ]
SELECT * FROM `hd_test` WHERE ( `id` = 1 ) LIMIT 1 [ RunTime:0.000918s ]
INSERT INTO `hd_test` (`name`) VALUES ('测试') [ RunTime:0.000463s ]
当数据库中存在了ID为1的记录时


执行结果如下SHOW COLUMNS FROM `hd_test` [ RunTime:0.003307s ]
SELECT * FROM `hd_test` WHERE ( `id` = 1 ) LIMIT 1 [ RunTime:0.001279s ]
INSERT INTO `hd_test` (`id`,`name`) VALUES (1,'测试') [ RunTime:0.000324s ]
会自动把自增的字段ID带进去,导致添加失败。

$model->add();
之前如果不查询的话。M("Test")->getById(1);
那么就正常。不会吧ID带进去。


是BUG?还是我不会用?





补充:可能是我不会用。我的应用场景是这样的。
我是用于二级栏目的
我的表结构是ID,NAME,PID

用户提交的NAME和PID。

检查ID=PID的记录是否存在,如果存在就添加记录,不存在就报错。$pid=isset($_REQUEST["pid"])?$_REQUEST["pid"]+0:0;
if($pid<=0)$this->error('父类必须选择!');
if(!M("Test")->getById($pid))$this->error('父类不存在!');
$model = M("Test");
$model->name="测试";
$model->pid=$pid;
$model->add();
代码如上。
请问我该怎么做?因为这样做的话。SQL语句会变成INSERT INTO `hd_test` (`id`,`name`,`pid`) VALUES (1,'测试',1)其实我要的是INSERT INTO `hd_test` (`name`,`pid`) VALUES ('测试',1)但前面的if(!M("Test")->getById($pid))$this->error('父类不存在!');这个校验父类是否存在的校验必须有。

麻烦你了。谢谢

最佳答案
收藏
孑孓
积分:417 等级:LV2
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /