这个多个值,我已经能够使用 for every-6ren">
gpt4 book ai didi

php - 如何从表单字段更新多个 mysql 行

转载 作者:行者123 更新时间:2023-11-29 20:26:36 26 4
gpt4 key购买 nike

您好,我正在创建一个表单,可以在其中更新数据库中的多行

首先,我有一个字段名为“pol”的表单,它应该带有多个值,如下使用“[]”声明的那样

 <form action="snooze.php" name="frm" method="post">
<input type="checkbox" name="pol[]" value="<?php echo $row_cert['Policy_Number']; ?>">

</form>

这个多个值,我已经能够使用 for every 循环来显示

<?php 
if (isset($_POST['pol']))
{
$hobby = $_POST['pol'];


foreach ($hobby as $hobys=>$value) {
echo "".$value."<br /><br />";
}
}
?>

但现在我尝试使用在 where 子句中的 for every 循环中传递的多个值来更新数据库中的多行,但它只传递 1 个值,而不是像上面的代码在 echo 时那样传递多个值。

这是我尝试过的

<?php
if (isset($_POST['pol']))
{
$db = new mysqli('localhost', '---', '----', '----');
if ($db->connect_error) {
die("Connect Error: " .$db->connect_error); //TODO: better error handling
}
$hobby = $_POST['pol'];
foreach ($hobby as $hobys=>$value) {
$sql = "UPDATE check_niid
SET niid_status = 'Successful'
WHERE Policy_Number = '$hobby[$hobys]'";
}
if (!$db->query($sql)) {
die("Update failed. Error: " .$db->error); //TODO: better error handling
}
}
?>

请问我在这里做错了什么,我的目标是能够使用 where 子句更新多行

最佳答案

您的查询执行位于 foreach 之外。 $sql 变量被多次覆盖,最终数组值仅在 $sql 中设置。仅在查询中执行一次,因此它应该位于 foreach 循环内

foreach ($hobby as $hobys=>$value) {
$sql = "UPDATE check_niid
SET niid_status = 'Successful'
WHERE Policy_Number = '$hobby[$hobys]'";

if (!$db->query($sql)) {
die("Update failed. Error: " .$db->error); //TODO: better error handling
}
}

关于php - 如何从表单字段更新多个 mysql 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39284732/

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