0

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

child_participantsWHERE中删除Child_Name='test' 和Parent_username='tester2'

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

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

3 回答 3

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'

希望这可以帮助!

于 2013-07-08T21:43:09.487 回答
0

当你把它分成两个 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

于 2013-07-08T23:24:14.287 回答
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;
}

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

于 2013-07-09T04:36:54.940 回答