php - 受影响的行不工作 - Codeigniter

标签 php mysql database codeigniter

我的模型中有这个删除功能。当您按下删除按钮时,它将从我的数据库中的总注释列中减去总注释数。例如。如果你有 200 条笔记,而你删除了其中的一条,那将是 199 条笔记,并且这条笔记将从数据库中删除。

我的代码:

public function entry_delete($pid) {

        $uid=$this->session->userdata('uid');

        $whereConditions = array('pid' => $pid, 'uid' => $uid);
        $this->db->where($whereConditions);
        $this->db->delete('dayone_entries');

        if ($this->db->affected_rows() == 0) {
            $sql_entry = "UPDATE users set total_entry = total_entry - 1 WHERE uid = $uid";
            $this->db->query($sql_entry);
            return true;
        } else {
            return false;
}
 }

但这行不通。我不知道为什么,但是当我从我的 View 中按下删除按钮时,它会从数据库中删除它并从我的 total_entry 表中减去 -1。但是,如果我注释掉

$this->db->delete('dayone_entries');

它仍然会从 total_entry 中减去 1。

我该如何解决这个问题?谢谢。

最佳答案

我不知道你是否解决了这个问题,但我认为 Ghost 所说的是你的

if ($this->db->affected_rows() == 0) {}

做错了检查。如果您只希望它在成功删除行时触发,您需要检查

if ($this->db->affected_rows() > 0) {}

这是说如果受影响的行多于 0 则执行此操作。在 CodeIgniter 中,affected_rows() 方法用于“执行‘写入’类型的查询(插入、更新等)”。

然后继续说“注意:在 MySQL 中,“DELETE FROM TABLE”返回 0 个受影响的行。数据库类有一个小 hack,允许它返回正确数量的受影响行。默认情况下,这个 hack 是启用的,但是它可以在数据库驱动程序文件中关闭。”因此,如果您的 if ($this->db->affected_rows() == 0) {} 在这两种情况下都被触发,则可以禁用此 hack,因为您询问“受影响的行是否等于零” this”,如果删除成功则不应触发。

关于php - 受影响的行不工作 - Codeigniter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28845287/

相关文章:

javascript - API 返回 3 条记录 - 主干集合不匹配

mysql_query() 在 php 退出后继续运行

mysql - 选择操作期间出现不明确的列名错误

php - 由于此错误,Wordpress 页面无法继续

php - 为什么php邮件功能在xampp中不起作用

php - 在 SQL 中有效但在 PHP 中无效的查询

java - Java MySQL INSERT(使用PreparedStatement)

database - 如何安全地存储我的 CouchDB 管理员密码?

.net - 可同步的CRM系统

关于 _SESSION 不是已定义变量的 Php 错误日志消息