【问题标题】:What is wrong with my mysql delete statement?我的 mysql 删除语句有什么问题?
【发布时间】:2015-02-09 03:04:45
【问题描述】:

谁能告诉我sql语句有什么问题?我希望它删除时间间隔超过 1 分钟的所有表行。我的 sql 语句没有显示任何错误,但它不会删除任何行。

顺便说一下,我使用的是 codeigniter 框架。

$new_date = date('Y-m-d H:i:s', now());
$query = $this->db->query("DELETE FROM table WHERE 'date/time' < ('$new_date' - INTERVAL 1 minute)");

【问题讨论】:

    标签: php mysql sql codeigniter sql-delete


    【解决方案1】:

    您在列标识符周围使用单引号而不是刻度

    $query = $this->db->query("DELETE FROM table WHERE `date/time` < ('$new_date' - INTERVAL 1 minute)");
    

    另外,$new_date = date('Y-m-d H:i:s', now()); 应该只是 $new_date = date('Y-m-d H:i:s');,因为 PHP 有一个名为 now() 的函数。或者,更好的是,只使用 MySQL 的内置日期函数:

    $query = $this->db->query("DELETE FROM table WHERE `date/time` < (NOW() - INTERVAL 1 minute)");
    

    仅供参考,在列标识符中使用/ 并不常见。

    【讨论】:

    • 查看date/time 周围的字符。他们是` 而不是'
    • 我明白了...谢谢.. 那么我应该使用 _ 而不是 / 吗?
    • 那会更“标准”
    • @John,您还可以选择一个更具描述性的名称来说明列存储的数据:CreateDateLastModifiedDateTrialExpirationDate;当有人必须在凌晨 3 点解决问题时,我们会感谢您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多