作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
简介:
基于查询,我动态生成了多个复选框。每个复选框的值都是来自查询行之一的字符串;
表单提交后,运行另一个脚本 (del.php)。此脚本获取已选中的复选框数组并循环遍历它们,以便它可以运行另外两个查询,即删除和更新查询。
它们不起作用!如果我尝试 INSERT 查询,它工作正常。但删除和更新不会。
这是我的代码:
索引.php:
<?php
$gettips = mysql_query('SELECT body FROM tips WHERE body!="" and approved!="yes" and approved!="no"')or die(mysql_error());
$i=0;
while($tips = mysql_fetch_array($gettips))
{ ?>
<input type="checkbox" name="checkboxes[]" value="<?php print $tips[0] ?>" />
<input type="checkbox" name="checkboxesno[]" value="<?php print $tips[0] ?>" />
<a class="names"> - <span><?php print $tips[0] ?></span></a><br />
<? $i++;
}
?>
和 del.php :
foreach($_POST['checkboxes'] as $check) {
mysql_query("INSERT INTO approved (body) VALUES ('$check') ");
mysql_query("UPDATE tips SET approved='yes' WHERE body='$check'");
}
foreach($_POST['checkboxesno'] as $key) {
mysql_query("DELETE FROM tips WHERE body='$key' ")or die(mysql_error());
}
mysql_error()
不会抛出任何错误。数据库连接适用于两个文件。复选框的值是字符串。我可以通过将字符串本身而不是 POST $variable
添加到查询来删除记录。(我还注意到我无法删除旧记录,只能删除新添加的记录)。
更新:
我意识到尝试删除 row='string'
的记录并不是最佳做法,至少对我而言是这样。因此,我决定提供表格的 id 值,而不是将字符串作为值传递给表单中的复选框。
这是新代码:
<?php
$gettips = mysql_query('SELECT id,body FROM tips WHERE body!="" and approved!="yes" and approved!="no"')or die(mysql_error());
$i=0;
while($tips = mysql_fetch_array($gettips))
{ ?>
<input type="checkbox" name="checkboxes[]" value="<?php print $tips[0] ?>" />
<input type="checkbox" name="checkboxesno[]" value="<?php print $tips[0] ?>" />
<a class="names"> - <span><?php print $tips[1] ?></span></a><br />
<? $i++;
}
?>
和删除查询:
foreach($_POST['checkboxes'] as $check) {
// echo "INSERT INTO approved (body) VALUES ('$check') <br>";
// echo "UPDATE tips SET approved='yes' WHERE body='$check'<br>";
mysql_query("INSERT INTO approved (body) VALUES ('$check') ");
mysql_query("UPDATE tips SET approved='yes' WHERE body='$check'");
}
foreach($_POST['checkboxesno'] as $key) {
// echo "DELETE FROM tips WHERE id=$key <br>";
mysql_query("UPDATE tips SET approved='no' WHERE id=$key");
mysql_query("DELETE FROM tips WHERE id=$key ")or die(mysql_error());
}
我仍然不知道为什么另一种方法不起作用,所以如果有人有机会解释一下,那就太棒了!
最佳答案
如果您在 forloop 中添加一些 echo 语句并注释掉查询,您将能够看到发送到 mysql 的确切内容,然后您将能够更好地解决您的问题。
foreach($_POST['checkboxes'] as $check) {
echo "INSERT INTO approved (body) VALUES ('$check') <br>";
echo "UPDATE tips SET approved='yes' WHERE body='$check'<br>";
//mysql_query("INSERT INTO approved (body) VALUES ('$check') ");
//mysql_query("UPDATE tips SET approved='yes' WHERE body='$check'");
}
foreach($_POST['checkboxesno'] as $key) {
echo "DELETE FROM tips WHERE body='$key' <br>";
//mysql_query("DELETE FROM tips WHERE body='$key' ")or die(mysql_error());
}
关于php - 删除和更新语句不适用于多个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8990019/
我是一名优秀的程序员,十分优秀!