Codeigniter不执行删除查询


Codeigniter does not execute delete query

我遇到了一个问题,当我试图在我的模型中运行这个函数时,它什么都不做。打印报表打印出来。

child_participants删除,其中Child_Name="测试"和Parent_username=‘ester2’

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

   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();
    }

来自文档:

如果你使用多个函数调用,它们将被链接在一起,它们之间有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'

希望这能有所帮助!

将其分解为两个where方法调用时,会得到相同的结果吗?我会根据你如何使用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

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

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;
}

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