【发布时间】:2021-06-02 05:01:11
【问题描述】:
我正在尝试在 PHP 中使用多个选中的复选框按值执行多个查询。 我遇到了麻烦,我的代码只执行一个复选框值查询,其余的被拒绝。
我在 StackOverflow 上查看了有关此问题的信息,我得到了很多关于 foreach 循环的线程,但在我的情况下,当我应用它时它不起作用。
请帮助我,我是第一次尝试 foreach 循环,所以我对此有点困惑。 我还有一个问题是我无法通过数组验证无效数据。 我如何解决这个问题?它仅适用于第一个检查值,但我想要所有选中的复选框。 我正在尝试从我在复选框中选择的那些特定 id 的数据库中获取数据。并在我下面提到的所有查询的数组中回显它-
在开发工具中看到的发送表单数据格式
referenceID[]: PO0203211
referenceID[]: PO203213
PHP
$checkbox = $_POST['referenceID'];
foreach ($checkbox as $chk) {
$stmt = $con->prepare(
"SELECT * FROM `table` WHERE `ref` = :referenceid"
);
$stmt->execute([':referenceid' => $chk]);
$stmt = $stmt->fetchAll();
$response = [];
$i = 1;
foreach ($stmt as $data) {
$response[] = [
"slno" => $i,
"name" => $data['name'],
"orderid" => $data['address'],
];
$i++;
}
echo json_encode($response);
exit();
}
【问题讨论】:
-
将
$response移动到第一个foreach之前(否则它将在每次迭代时被覆盖)。然后将echo和exit移动到foreach循环之后。如果你在 foreach 中有一个exit,它总是会在第一次迭代后退出脚本。 -
您尝试过什么调试问题?预期的结果是什么?
-
我会建议使用另一种方式。在这里,如果您有 100 个复选框,您将执行 100 个查询。也许最好“粘合”所有复选框值,然后使用“FIND_IN_SET”或“IN”操作仅执行一个查询。
-
@MagnusEriksson 谢谢你..它的工作......请给我机会投票给你。假设
PO0203211这在数据库中不可用我如何显示this is not availe in db与每个循环的错误。 -
@Peter 你是对的,但你能帮助我如何在我的代码中应用你的想法。我是新手,就我而言,您的功能听起来很难理解。你是真的-请帮助我
标签: php sql arrays pdo foreach