我有一个问题,当我尝试在我的模型中运行此函数时,它什么都不做。 print语句打印出来。
DELETE FROM
child_participants
WHEREChild_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();
}
答案 0 :(得分:4)
如果您使用多个函数调用,它们将与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;
}
我希望这能解决你的问题。