【发布时间】:2015-07-04 21:59:12
【问题描述】:
我有这个代码,
$q = $dbc -> prepare ("SELECT * FROM tasks ORDER BY date_time LIMIT 0, 15");
$q -> execute();
echo '<form action="/adminpanel?tab=process" method="post">
<input type="hidden" name="deletetask" />';
while ($todo = $q -> fetch(PDO::FETCH_ASSOC)) {
echo '<div id="update"><div><strong>'
. $todo['date_time'] . '</strong><span>' . $todo['type']
. '</span></div><p>' . $todo['message']
. '</p><input class="checkbox" name="deletetask" value="'
. $todo['date_time'] . '" type="checkbox" /></div>';
}
echo '<input type="submit" value="Delete Tasks" /></form>';
除了一件事之外,现在一切都按预期工作,我还没有在互联网上真正找到任何答案。我的 while 循环总是有不止一行,并且几乎总是希望从中删除不止一个。
就这个脚本而言,表单确实可以工作但它只会删除最后一个被点击的复选框。我理解它为什么这样做,但我不明白如何克服这个问题我正在使用 PDO 和准备好的语句。
【问题讨论】:
-
我没有看到任何用于删除行的代码。
-
代码是("DELETE FROM table WHERE id = ?");
-
代码应该是
DELETE FROM table WHERE id IN(?,?,?...?) -
好吧 - 改变它!调试它,重写它,分解它。你是程序员还是什么?
-
@xdazz 我没有复制和粘贴它,我什至没有尝试过,我知道它不起作用,因为我的表单值显示在 while 循环中,使名称相同,所以在 php 中,$_POST 变量会被新值覆盖。