konakona
[原创]ThinkPHP2 使用add()无法插入数据或缺少数据的解决方法
[原创]ThinkPHP2 使用add()无法插入数据或缺少数据的解决方法

好久没研究TP(ThinkPHP)了,今天拿起来,感觉又生疏了不少。

就拿今天一些小技巧来讲吧,TP的东西,还真的是要琢磨出来 的,手册上是不会告诉你这些的……这也是它给我感觉比CI差的主要原因,开发组都去赚钱了呢~

但是代码还是有借鉴的地方的,那就原谅他们好 了~哇哈哈。

好,正文开始…

首先我将我要插入的数据print_r($data)列出来:

Array
(
   [year] => 2010
    [month] => 07
    [day] => 20
    [reason] => fffffff哈
    [type] => 收入
    [gold] => 10
   [cansee] => 0
    [user_id] => 1
)

thinkphp执行插入部分示例代码:

if (!$this->model->create($data)) {
			$this->formSubmitJson('',$this->model->getError());
		} else {
			$this->model->add($data);
			echo $this->model->getlastsql();
			$this->formSubmitJson('ok', '记帐成功!');
		}
INSERT INTO `kona_tallybook` (`year`,`month`,`day`,`gold`,`cansee`,`user_id`) VALUES ('2010','07','20',10,'0','1');

发现我的reason和type总是无法插入,连sql语句都没生成。

找了下原因,上TP官方论坛搜了一遍,总结下:

1、Data缓存文件搞的鬼。因为Create()函数会自动创建一些存储了字段的php文件,然后进行类型效验。在第2次Create()的时候,如果这个文件存在就不再去数据库里查找了,直接用。
所以这里的缓存文件,在你改了表结构后,必须删……

一般位置在项目文件夹下:\KONAKONA_App\Runtime\Data\_fields\         这底下的文件全删都没关系,会自动重新创建。

顺便借机解说下create()和add()的作用,手册上就跟放屁一样根本看不懂的。

http://blog.crazyphper.com/wp-content/uploads/2010/07/fangpi-300x163.jpg

这不是放屁是什么

事实上,create($data)不会把数据保存入数据库.它只是用来实现数据过滤,自动验证,自动填充功能的.而add()才是把数据存入数据库.

Q:再补充一点,create()如何做到数据过滤,验证,填充的呢?

A:一般都会建一个 *Model.class.php 在这里面写规则.

有关用Model去效验提交数据后插入数据库的操作方法可以看这里

啊啊~又下雨了~最近3天多雨呢……

赞赏
首页      程序开发      PHP      ThinkPHP      [原创]ThinkPHP2 使用add()无法插入数据或缺少数据的解决方法
https://secure.gravatar.com/avatar/3b712b34a0e1b689cfb524c9c6bcdc47?s=256&r=g

团哥

文章作者

继续玩我的CODE,让别人说去。 低调,就是这么自信。

发表评论

textsms
account_circle
email

konakona

[原创]ThinkPHP2 使用add()无法插入数据或缺少数据的解决方法
好久没研究TP(ThinkPHP)了,今天拿起来,感觉又生疏了不少。 就拿今天一些小技巧来讲吧,TP的东西,还真的是要琢磨出来的,手册上是不会告诉你这些的……这也是它给我感觉比CI差的主要原因,开发组都去赚钱了呢~ 但是代码还是有借鉴的地方的,那就原谅他们好了~哇哈哈
扫描二维码继续阅读
2010-07-20