thinkphp 修改数据库数据不成功
public function update(){
$room=M('room');
// $room_id=$_GET['room_id'];
$room_id=$_POST['room_id'];
$roominfo['room_id']=$_POST['room_id'];
$roominfo['room_type']=$_POST['room_type'];
$roominfo['room_status']=$_POST['room_status'];
$roominfo['room_area']=$_POST['room_area'];
$roominfo['room_cost']=$_POST['room_cost'];
$roominfo['description']=$_POST['description'];
print_r($roominfo);
// $room->where("room_id=$room_id")->save($roominfo);
echo "";
// $this->redirect("showRoom");
}
我的修改函数代码如上,打印了$room_info对象的值,也确实是修改过的,但是为什么执行之后数据库的数据还是没有改变。请问这是为什么?
回复内容:
public function update(){
$room=M('room');
// $room_id=$_GET['room_id'];
$room_id=$_POST['room_id'];
$roominfo['room_id']=$_POST['room_id'];
$roominfo['room_type']=$_POST['room_type'];
$roominfo['room_status']=$_POST['room_status'];
$roominfo['room_area']=$_POST['room_area'];
$roominfo['room_cost']=$_POST['room_cost'];
$roominfo['description']=$_POST['description'];
print_r($roominfo);
// $room->where("room_id=$room_id")->save($roominfo);
echo "";
// $this->redirect("showRoom");
}
我的修改函数代码如上,打印了$room_info对象的值,也确实是修改过的,但是为什么执行之后数据库的数据还是没有改变。请问这是为什么?
// $room->where("room_id=$room_id")->save($roominfo);
前面的注释符号是不是要去掉。。。
另外 : "room_id=$room_id" ,楼主可以百度下sql注入。
M()->getLastsql()
看着应该是thinkphp
,提几点意见。
不要直接用
$_POST
或者用$_Get
,以防止SQL注入
,应该用I
函数。调试sql应该用
$obj->getLastsql()
方法。输出对象应用自带的
dump
函数。
确定代码没问题的话,也可能是你数据库问题,比如你的账号没有写权限,你操作的是读库,不能执行更新操作等,先排查下哪里问题吧
如果可能的话打印下M()->getLastsql()
-
如果你的room_id为表主键那么可以用以下代码
$roominfo['room_id']=$_POST['room_id']; $roominfo['room_type']=$_POST['room_type']; $roominfo['room_status']=$_POST['room_status']; $roominfo['room_area']=$_POST['room_area']; $roominfo['room_cost']=$_POST['room_cost']; $roominfo['description']=$_POST['description']; $room->save($roominfo);
$room->where("room_id=".$room_id)->save($roominfo);
把注视放开试试呢
在$room_id下面添加这句话:$roominfo = $room->getByID($room_id);