无法从数据库中删除

时间:2014-03-01 20:07:46

标签: php mysql codeigniter

告诉我,可能是什么问题?我尽其所能,但不断显示'错误'。 控制器:

<?php
  class Boss extends CI_Controller {

  function __construct() 
  {
      parent:: __construct();

      $this->load->model('boss_model');
      $this->load->model('news_model');
      $this->load->model('reviews_model');
  }

  public function index()
  {
      if($this->userlib->logged_in_boss() == FALSE)
          show_404();



      $data['news'] = $this->news_model->get_news();
      $data['reviews'] = $this->reviews_model->get_reviews();

      $this->load->view('boss/main.php', $data);
}

public function review_del($id)
{
      $delete = $this->reviews_model->del_review($id);

      if($delete)
      {
          echo "Success";
      }
      else
      {
          echo "Error";
      }
  }
}

reviews_model:

<?php
class Reviews_model extends CI_Model {

public function del_review($id = null)
{
    $this->db->delete('reviews', array('id' => $id));
}
}

P.S。 - 表'review'不为空,'database'包含在autoload.php中

1 个答案:

答案 0 :(得分:1)

del_review不返回值,因此$delete永远不会获得正确的结果值,并且始终计算为false。所以删除本身might已经成功,但你永远不会知道。 ;)

最简单:改变如下:

public function del_review($id = null)
{
    return $this->db->delete('reviews', array('id' => $id));
}

我认为这应该返回delete语句本身是否成功。这不会告诉您是否删除了实际行。也许它之前被其他人删除了。如果要检查,可以使用:

public function del_review($id = null)
{
    $this->db->delete('reviews', array('id' => $id));
    return $this->db->affected_rows() > 0;
}

执行delete语句,然后检查是否删除了实际行。因此,当您尝试删除不存在的记录时,也会收到错误。