PHP for循环错误未定义的偏移量

发布于 2024-10-06 18:50:30 字数 612 浏览 0 评论 0原文

我有下面的代码,它循环遍历选定的复选框并执行 sql 语句。

if (isset($_POST['delete']))
{
   for($i=0;$i<$recordcount;$i++)                       
   {                        
       $deleteid = isset($_POST['checkbox'][$i]);
       echo "ID = ".$deleteid."<br />"; //Error checking
       $sqldelete = "DELETE FROM customer WHERE cus_ID = ".$deleteid."";
       echo $sqldelete."<br />"; //Error checking
       $deleters = $conn->Execute($sqldelete);                  
   }
}

这会运行 sql 查询,但它会尝试比需要的次数多运行一次,即我选中两个复选框,sql 运行 3 次。所以这会导致错误,因为 ID 为空。我还得到一个未定义的偏移量 1。

有什么建议吗?谢谢。

I have the code below which loops through selected checkboxes and executes and sql statement.

if (isset($_POST['delete']))
{
   for($i=0;$i<$recordcount;$i++)                       
   {                        
       $deleteid = isset($_POST['checkbox'][$i]);
       echo "ID = ".$deleteid."<br />"; //Error checking
       $sqldelete = "DELETE FROM customer WHERE cus_ID = ".$deleteid."";
       echo $sqldelete."<br />"; //Error checking
       $deleters = $conn->Execute($sqldelete);                  
   }
}

This runs the sql query but it tries it run it once more than required, i.e I check two check boxes, the sql runs 3times. So this casues an error as the ID is empty. I also get an undefined offset 1.

Any advice? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

剧终人散尽 2024-10-13 18:50:30

这句话绝对是错误的:

$deleteid = isset($_POST['checkbox'][$i]);

也许你的意思是这样的?

$deleteid = isset($_POST['checkbox'][$i]) 
    ? intval($_POST['checkbox'][$i]) : false;
if ($deleteid === false) {
    continue;
}

// rest of the code follows

另外,您可能可以摆脱 $recordcount 并在 $_POST['checkbox'] 上执行 foreach

This line is definitely wrong:

$deleteid = isset($_POST['checkbox'][$i]);

Maybe you meant it like this?

$deleteid = isset($_POST['checkbox'][$i]) 
    ? intval($_POST['checkbox'][$i]) : false;
if ($deleteid === false) {
    continue;
}

// rest of the code follows

Also, you could probably get rid of $recordcount and do a foreach over $_POST['checkbox'].

软甜啾 2024-10-13 18:50:30
if (isset($_POST['delete']))
{
   for($i=0;$i<$recordcount;$i++)                       
   {                        
       $deleteid = isset($_POST['checkbox'][$i]);
       if ($deleteid) {
          $sqldelete = "DELETE FROM customer WHERE cus_ID = ".$_POST['checkbox'][$i];
          echo $sqldelete."<br />"; //Error checking
          $deleters = $conn->Execute($sqldelete);                  
       }
   }
}

为了安全起见,转义您的输入

if (isset($_POST['delete']))
{
   for($i=0;$i<$recordcount;$i++)                       
   {                        
       $deleteid = isset($_POST['checkbox'][$i]);
       if ($deleteid) {
          $sqldelete = "DELETE FROM customer WHERE cus_ID = ".$_POST['checkbox'][$i];
          echo $sqldelete."<br />"; //Error checking
          $deleters = $conn->Execute($sqldelete);                  
       }
   }
}

And escape your input for safety

司马昭之心 2024-10-13 18:50:30

试试这个

if(isset($_POST['delete']))
    {
       $i=0;
        foreach($_POST['checkbox'] as $user)
        {
            $sqldelete = "DELETE FROM customer WHERE cus_ID = ".$user."";
           echo $sqldelete."<br />"; //Error checking
         $deleters = $conn->Execute($sqldelete); 
            $i++;
        }

    }

try this

if(isset($_POST['delete']))
    {
       $i=0;
        foreach($_POST['checkbox'] as $user)
        {
            $sqldelete = "DELETE FROM customer WHERE cus_ID = ".$user."";
           echo $sqldelete."<br />"; //Error checking
         $deleters = $conn->Execute($sqldelete); 
            $i++;
        }

    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文