【发布时间】:2011-03-03 18:57:53
【问题描述】:
我正在尝试在 Zend Framework 中重新创建以下内容,但不知道该怎么做:
DELETE FROM mytablename WHERE date( `time_cre` ) < curdate( ) - INTERVAL 4 DAY
我在想这样的事情:
$table = $this->getTable();
$db = Zend_Registry::get('dbAdapter');
$db->delete($table, array(
'date(`time_cre`) < curdate() - interval 4'
));
这看起来对吗?
处理此类事情的最佳方法是什么?
编辑:确认!抱歉,我是从我用来测试的 SELECT 中改编的,并且在粘贴时没有正确更改语法。我已经编辑了示例以修复它。
【问题讨论】:
-
@rg88 不清楚您需要删除什么。删除的语法是
DELETE FROM [table_name] -
你在使用什么 dbms(我会假设 mysql?)你的语法是非标准的,而且很奇怪。如果您只想从一列中删除数据,则应使用 UPDATE 并将该列设置为 NULL、''、0 等。DELETE 专门用于删除整行,除非您的 dbms 支持我不熟悉的内容。
-
从哪里获得该语法:
DELETE [something] FROM table [where]? MySQL、PostgreSQL 或 Oracle 都没有使用它。在DELETE之后你不需要任何东西,因为你删除的是整行,而不是列值。 -
DELETE 删除整行,n
-
@criticus @Matt @singles - 我未能正确编辑示例。我已经更新了我的示例.. 对此感到抱歉。