从SQL数据库中删除特定数量的行

时间:2012-12-31 16:41:35

标签: php mysql joomla sql-delete

我正在尝试创建一个批量删除按钮。我正在尝试输入一个输入字段,管理员可以指定他/她想要删除的行数。

到目前为止,我使用以下代码尝试删除输入字段中指定的数量,但没有任何反应,错误日志中没有错误:

helper.php

function deleteall($all) {
    $db = JFactory::getDBO();
    $query = $db->getQuery(true);
    $query->delete()
    ->from('#__shoutbox');
    $db->setQuery($query, 0, $all);
    $db->query();
}

mod_shoutbox.php

if(isset($post['deleteall'])) {
    $all = $post['all'];
    modShoutboxHelper::deleteall($all);
}

如default.php

<form method="post" name="deleteall">
    <input name="all" type="text" value="" />
    <input name="deleteall" type="submit" value="mass delete" />
</form> 

我相信SQL查询很好,问题与 default.php 中的HTML有关,但不是100%肯定。有人可以让我知道我哪里出错吗?

更新

$post已被定义为我正在使用Joomla编码标准。

3 个答案:

答案 0 :(得分:1)

我猜你想要做的事情由于以下原因而无法完成。如何告诉db要删除哪些行?你显然应该有一个过滤器。 EG:DELETE FROM table_name WHERE ID BETWEEN 1 AND 2999。这里的行只有1和1之间的ID。 2999已删除。

其他你想要的是LIMIT。 EG:DELETE FROM table_name WHERE ID BETWEEN 1 AND 2999 LIMIT 1000LIMIT可以限制要删除的行。

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
    [PARTITION (partition_name,...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

这里你没有任何语法错误,你出错了就是逻辑。希望能解释一切。如果您有任何问题,请告诉我。

答案 1 :(得分:0)

您的帖子处理程序不正确。它应该是$ _POST ['deleteall']

答案 2 :(得分:0)

问题是方法deleteall没有收到它的$all参数(它什么也没收到,所以查询类使用的是0)。