gpt4 book ai didi

php - 删除和更新语句不适用于多个复选框

转载 作者:行者123 更新时间:2023-11-29 00:49:54 25 4
gpt4 key购买 nike

简介:

基于查询,我动态生成了多个复选框。每个复选框的值都是来自查询行之一的字符串;

表单提交后,运行另一个脚本 (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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com