日期:2014-05-16 浏览次数:20374 次
2,表结构如下:

下面就来说解决方法,其实很简单,按照基本的MVC结构,不管是PHP还是JAVA还是.NET都有这样的结构,那么按照严格的标准,MODEL层的代码是必须写的,就是要和数据库的字段做映射。但是很多用mysql的,就直接没有去写MODEL里面的代码。这种习惯被用到了oracle中,就出了问题。
5, 下面针对我上面的数据表写出我的代码:
我的Action是这样的:UserAction.class.php。控制器我只对添加和查找做例子,因此代码如下:
public function index() {
header("Content-Type:text/html; charset=utf-8");
$M_User = new UserModel();
$User_List = $M_User->select();
$this->assign('Title', '用户管理');
$this->assign('UserList', $User_List);
$this->display();
}
//添加用户提交处理
public function Create_Post() {
$M_User = new UserModel();
$data['username'] = $this->_post('username');
$data['password'] = md5($this->_post('pwd'));
if ($M_User->create()) {
$Query_Result = $M_User->add($data);
if (false !== $Query_Result) {
$this->success('用户添加成功');
} else {
$this->error('用户添加错误');
}
} else {
header("Content-Type:text/html; charset=utf-8");
exit($M_User->getError() . ' [ <a href="javascript:history.back()">返 回</a> ]');
}
}
Action解释:
$M_User=new UserModel();
这个方法最好这么写,因为做.NET的原因,一直都这么写的。针对具体的模型进行实例化,严格规定我就要对User表进行操作了。
获取POST数据的代码就不多解释了。
$M_User->create();
这是ThinkPHP的一个方法,很好,可以帮你过滤掉非法的东西,建议使用。
$Query_Result = $M_User->add($data);
这一段就是数据的添加,我习惯指定要添加的数据,也是因为这一段需要根据$M_User实例化,并过滤字段。当然了,我们只要做好MODEL的代码,就不会有问题。下面的代码就不解释。官方文档都有。
我的Model是这样的:UserModel.class.php
protected $fields = array(
'id', 'username', 'password'
);
Model解释:这才是重点,这有这样,new出来的$M_User的映射字段数组才不会为空,这样才能和POST的数据进行对应,才会让过滤方法正常识别,不被过滤。