Php Codeigniter不执行删除查询
我有一个问题,当我尝试在我的模型中运行这个函数时,它什么也不做。打印语句打印出来。 从Php Codeigniter不执行删除查询,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有一个问题,当我尝试在我的模型中运行这个函数时,它什么也不做。打印语句打印出来。 从child\u参与者中删除WHEREchild\u Name='test' 和Parent\u用户名='tester2' 当我从命令行运行时,它正常工作(记录存在并被删除)。但当我从我的web应用程序中尝试它时,它不会给我任何错误,但实际上不会删除任何内容。我知道我正在正确地传递数据,因为我在控制器和模型中接收数据。有什么好处 function remove_child($username, $p
child\u参与者中删除WHEREchild\u Name
='test'
和Parent\u用户名
='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();
}
从:
如果使用多个函数调用,它们将被链接在一起并在它们之间:
尝试更改:
$where = "`Child_Name`='$participant_name' and`Parent_username`='$username'";
到
希望这有帮助 来自:
如果使用多个函数调用,它们将被链接在一起并在它们之间:
尝试更改:
$where = "`Child_Name`='$participant_name' and`Parent_username`='$username'";
到
希望这有帮助 当您将它分成两个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操作更快,您可以使用基本模型的一个非常简单的扩展。我在推荐中使用的一个方法是当您将它分成两个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操作更快,您可以使用基本模型的一个非常简单的扩展。我推荐使用的一个方法是检查您的用户在数据库中是否具有删除权限。如果有,那就改变你的想法
代码如下:
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;
}
我希望这能解决您的问题。检查您的用户在数据库中是否具有删除权限。如果有,那就改变你的想法
代码如下:
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;
}
我希望这能解决您的问题。$this->db->\u error\u message()代码>--检查主题的错误,但您应该利用codeigniter的查询组合代码来防止SQL注入攻击。@AmalMurali未给出错误输出。`符号可能会导致问题。从$where字符串中删除后重试。如果全部失败,请使用原始查询。还可以查看$this->db->_error_message()代码>--检查主题的错误,但您应该利用codeigniter的查询组合代码来防止SQL注入攻击。@AmalMurali未给出错误输出。`符号可能会导致问题。从$where字符串中删除后重试。如果全部失败,请使用原始查询。还可以看看