thinkphp add()和save()执行完毕,有返回值,但是数据库并未有修改
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp add()和save()执行完毕,有返回值,但是数据库并未有修改相关的知识,希望对你有一定的参考价值。
//登录成功,更新用户表登录时间和ip
echo 'BEGIN';
$save['logindate'] = $logindate;
$save['loginip'] = $loginip;
$where_save['username'] = $username;
$user= M('User');
$user->where($where_save)->save($save);
echo 'END';
以上是代码,输出sql后直接从数据库运行是没问题的,返回值是1没有报错之类的
这个应该不会的,首先我能确定没有错,再有输出的sql是没问题的,而且有返回值说明sql执行了,模型传错应该会报错的吧
追答表名没写错,那就是数据库连接有问题了,也可以先刷新一下数据库看看是不是缓存的问题
追问缓存问题我试过了,浏览器缓存,程序运行的缓存全都清理过;
数据库连接问题的话,其他地方都是没有问题的,包括find、select等都没问题
那就是没有数据传入数据库,也就是你没有接收到登录时间和IP
追问如果没有收到会修改表内容为''的,我也试过直接给值的方法,仍然不行
追答where($where_save) where这里面是个条件不是一个数组
追问是数组的,突然发现一个问题,我add的返回值是2310,根据thinkphp框架这个值是表的id,我表只有一千行,用这个数find()的时候返回
Array
([id] => 2325 [message] => 登入系统 [date] => 2015-10-20 15:11:45
[ip] => 127.0.0.1
[userid] => admin
[shop] => 26
)
那就是你的条件有问题了,要指定修改哪一条
参考技术A 是不是没有加事务追问功能没必要加事物,不加事物会导致这种问题吗
追答数据库做修改就要有事务,如果是查询就没必要加
追问.谁说修改就必须要有事务的。。。如果数据表类型不支持事务你怎么办
追答你对事务的理解是什么
追问事务是一个执行单位,不过就是把sql包起来了
追答片面,只知道定义,不知道它的意义
追问你很无聊知不知道,当老师的吧,能不能解决问题?
追答你用的什么数据库
追问追答确定加了事务还不行,那就是你说的数据表类型不支持事务
ALTER TABLE 表名 TYPE = INNODB
我可以很严肃的告诉你,不关事务的事。数据表类型是innoDB,我也按你说的加事务试过了
ThinkPHP的增删改查!
public function addFun(){ $data = array( ‘goods_name‘=>‘小米‘, ‘goods_price‘=>‘3210‘ ); $result = M(‘goods‘)->add($data); }
public function addFun(){ $goods = M(‘goods‘); $goods->goods_name = ‘山寨机‘; $goods->goods_price = 998; $result = $goods->add(); }
删除:delete
删除单条数据:
public function deleteFun(){ //result 返回受影响的行数 $result = M(‘goods‘)->delect(138); }
删除多条数据:
public function deleteFun(){ $result = M(‘goods‘)->delect(‘137,138,140‘); }
通过where来删除:
$result = M(‘goods‘)->where("goods_price >= 900")->delect();
修改:save
public function saveFun(){ $data = array( ‘goods_name‘=>‘小米‘, ‘goods_price‘=>‘3210‘, ‘goods_id‘=>‘130‘ ); $result = M(‘goods‘)->save($data);
2,通过AR (active record )方式修改:
public function saveFun(){ $goods = M(‘goods‘); $goods->goods_name = ‘山寨机‘; $goods->goods_price = 998; $goods->goods_id=130; $result = $goods->save(); }
查询:select
public function showList(){ $list = M(‘Goods‘)->select(); $this->assign(‘list‘,$list); $this->display(); }
<volist name="list" id="vo"> {$vo.id}:{$vo.name} </volist>
条件查询:
1、获取一条记录:
$list = M(‘Goods‘)->find();
2、查询主键为 2 的记录:
$list = M(‘Goods‘)->select(2);
3、查询编号为 2、3、4、5 的记录:
$list = M(‘Goods‘)->select(‘2,3,4,5,6‘);
4、where条件查询:
$list = M(‘Goods‘)->where("goods_name like ‘%诺基亚%‘")->select();
$list = M(‘Goods‘)->where("goods_name like ‘%诺基亚%‘ and goods_price >= 3000")->select();
5、limit条件查询:
$list = M(‘Goods‘)->limit(‘5‘)->select();
6、order排序:
$list = M(‘Goods‘)->limit(‘5‘)->order(‘goods_price desc‘)->where("goods_price >=50")->select();
7、指定字段进行查询:
$list = M(‘Goods‘)->field(‘goods_name,goods_price‘)->select();
public function sqlFun(){ //查询 // 空模型 是sw_goods不是goods,要全名 $list = M()->query("select * from sw_goods"); }
增/删/改 使用execute()方法:
public function sqlFun(){ //增 删 改 $list = M()->query("delete * from sw_goods where goods_id=‘135‘"); }
这里的 result 返回的是受影响的行数;
以上是关于thinkphp add()和save()执行完毕,有返回值,但是数据库并未有修改的主要内容,如果未能解决你的问题,请参考以下文章