gpt4 book ai didi

PHP + MySQL 问题 - 我哪里出错了?

转载 作者:行者123 更新时间:2023-11-29 03:59:56 27 4
gpt4 key购买 nike

这是挖掘。我一遍又一遍地查看我的代码,直到我的头脑 NumPy ,仍然无法弄清楚问题出在哪里。

我正在使用在类似 CRM 的应用程序后端运行的删除功能。有一个用户列表,每个注册用户在表单内都有一个复选框,还有一个提交按钮来运行代码,通过他们的 ID 从数据库中删除选定的用户。

复选框是在 foreach 循环中生成的,该循环使用从选择查询返回的数组填充表。每个用户的每个复选框行都是这样的:

<input type="checkbox" name="checked[]" value="<?php echo ($userfromforeach['id']); ?>">

表单的提交按钮包含 (name="deleteusers")

而表单提交的实际删除代码如下:

// Delete users by selected as posted by form
if(isset($_POST['deleteusers']))
{
foreach($_POST['checked'] as $user)
{
$query = "
DELETE
FROM $usertable
WHERE id = $user
";

try
{
// These two statements run the query against your database table.
$stmt = $db->prepare($query);
$stmt->execute();
}
catch(PDOException $ex)
{
die("MySQL execution error, please contact technical support.");
}

}
// $_POST['checked'] = NULL;
header("Refresh:0");
}

出于某种我不知道的原因,一切似乎都在正确触发,但是没有从数据库中删除任何记录。没有返回 MySQL 错误,当我 print_r 输出 $_POST['checked'] 变量时,它按预期显示:

数组 ( [0] => 122 [1] => 115 )

^ 每个键的值是用户的 ID。

有什么想法吗?我是否只是因为错过了一些完全基本的东西而在自己的脑海中解决了一个问题?非常感谢您的帮助。

最佳答案

当您使用 for/foreach 函数遍历某些内容时。您必须将整个重复逻辑用花括号括起来。否则只会执行一个语句在您的情况下,这是将字符串分配给 $query 变量。就是这样。尽管仍有许多改进之处。但要解决此特定问题,您的 foreach 应如下所示:

foreach($_POST['checked'] as $user)
{
$query = "DELETE FROM $usertable WHERE id = $user";
try
{
$stmt = $db->prepare($query);
$stmt->execute();
}
catch(PDOException $ex)
{
die("MySQL error, blah blah blah...");
}
}

关于PHP + MySQL 问题 - 我哪里出错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37860563/

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