Codeigniter不执行删除查询

时间:2013-07-08 21:28:44

标签: php mysql codeigniter

我有一个问题,当我尝试在我的模型中运行此函数时,它什么都不做。 print语句打印出来。

  

DELETE FROM child_participants WHERE Child_Name ='test'   和Parent_username = 'tester2'

当我从命令行运行时工作正常(记录存在并被删除)。但是,当我从我的Web应用程序尝试它时,它没有给我任何错误但实际上没有删除任何东西。我知道我正确传递数据,因为我在控制器和模型中收到它。是什么给了什么?

   function remove_child($username, $participant_name) 
    {
    $where = "`Child_Name`='$participant_name' and`Parent_username`='$username'";
    $this->db->where($where, null, false);
    $this->db->delete($this->child_table); 
    echo $this->db->last_query();
    }

3 个答案:

答案 0 :(得分:4)

来自documentation

  

如果您使用多个函数调用,它们将与AND链接在一起:

尝试更改:

$where = "`Child_Name`='$participant_name' and`Parent_username`='$username'";

$this->db->where('Child_Name', $participant_name);
$this->db->where('Parent_username', $username);

// translates to WHERE Child_Name='XXX' and Parent_username='XXX'

希望这有帮助!

答案 1 :(得分:0)

当你将方法调用分成两个时,你会得到相同的结果吗?关于你如何使用where方法,我会这样做。

$this->db->where('Child_Name',$participant_name);
$this->db->where('Parent_username',$username);
$this->db->delete($this->child_table);

另外,打开探查器以查看正在运行的所有查询,以确保没有我们看不到可能干扰或未提交事务的其他代码部分

$this->output->enable_profiler(TRUE);

另一个建议是软删除的做法,以便您的数据不会真正消失,并最大限度地减少您需要依赖重建日志文件的程度。另外,为了更快地进行简单的CRUD操作,您可以使用基本模型的非常简单的扩展。我推荐使用的是https://github.com/jamierumbelow/codeigniter-base-model

答案 2 :(得分:0)

检查您的用户是否在数据库中具有删除权限。如果它没有改变你的 像这样的代码:

function remove_child($username, $participant_name) 
{
    $this->db->trans_start();
    $this->db->where('Child_Name',$participant_name);
    $this->db->where('Parent_username',$username);
    $this->db->delete($this->child_table); 
    $this->db->trans_complete();
    return TRUE;
}

我希望这能解决你的问题。