thinkphp多表修改 的问题

thinkphp多表修改
$pot['id'] = I('post.id');
$pot['account'] = I('post.account');
$pot['password'] = I('post.password');
//$post['id'] =I('post.id');
$post['uid'] = I('post.uid');
$post['username'] = I('post.username');
$post['truename'] = I('post.truename');
$uname = M('userinfo');
$user = M('user');

if($uname->create() && $user->create()){

$users = $user->save($pot);
$unames = $uname->save($post);

if($unames && $users){
$this->success('修改成功',U('Quser/user'));
}else{
//$this->error('修改失败');
}
}
结果修改不成功, 两个表一起修改 如何才能修改????
我已经找到答案 , 是第二个表 找不到ID 把第二个表ID 查询出来 多表就可以修改了

不知道 “两个表一起修改,修改不成功”具体的表现是什么。至少if($unames && $users)只一句是有问题的:

thinkphp开发手册中关于save函数的返回值的描述:如果查询错误或者数据非法返回false,如果更新成功返回影响的记录数

也就是说,你原封不动的提交一个表,这样即便更新成功返回的却是0,因为数据不变,影响的记录数为0,那么if($unames && $users)就会有问题了。这样的话,如果你同时修改两个表,其中一个表改了数据而另一个没改,结果就是if(1 && 0)即是false了。

所以正确的方法应该是

if($unames!==false && $users!==false){} // 注意是!==
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网