我遇到了一个问题,当我试图在我的模型中运行这个函数时,它什么都不做。打印报表打印出来。
从
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;
}
我希望这能解决你的问题。