1

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

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

助手.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);
}

默认的.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 编码标准。

4

3 回答 3

1

我想由于以下原因,您尝试做的事情是无法完成的。你怎么能告诉数据库要删除哪些行?你显然应该有一个过滤器。例如:DELETE FROM table_name WHERE ID BETWEEN 1 AND 2999。此处仅删除 ID 介于 1 和 2999 之间的行。

否则你想要的是LIMIT. 例如: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]

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

于 2013-01-01T10:28:09.093 回答
0

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

于 2012-12-31T16:46:46.210 回答
0

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

于 2012-12-31T16:58:50.707 回答