Heim  >  Artikel  >  Backend-Entwicklung  >  thinkphp 修改数据库数据不成功

thinkphp 修改数据库数据不成功

WBOY
WBOYOriginal
2016-07-06 13:53:412356Durchsuche

<code>    
    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 "<script>alert('修改成功')</script>";
//          $this->redirect("showRoom");
  
    }
</code>

我的修改函数代码如上,打印了$room_info对象的值,也确实是修改过的,但是为什么执行之后数据库的数据还是没有改变。请问这是为什么?

回复内容:

<code>    
    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 "<script>alert('修改成功')</script>";
//          $this->redirect("showRoom");
  
    }
</code>

我的修改函数代码如上,打印了$room_info对象的值,也确实是修改过的,但是为什么执行之后数据库的数据还是没有改变。请问这是为什么?

// $room->where("room_id=$room_id")->save($roominfo);

前面的注释符号是不是要去掉。。。

另外 : "room_id=$room_id" ,楼主可以百度下sql注入。

M()->getLastsql()

看着应该是thinkphp,提几点意见。

  1. 不要直接用$_POST或者用$_Get,以防止SQL注入,应该用I函数。

  2. 调试sql应该用$obj->getLastsql()方法。

  3. 输出对象应用自带的dump函数。

确定代码没问题的话,也可能是你数据库问题,比如你的账号没有写权限,你操作的是读库,不能执行更新操作等,先排查下哪里问题吧

  1. 如果可能的话打印下M()->getLastsql()

  2. 如果你的room_id为表主键那么可以用以下代码

    <code>$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);</code>

$room->where("room_id=".$room_id)->save($roominfo);

把注视放开试试呢

在$room_id下面添加这句话:$roominfo = $room->getByID($room_id);

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn