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

PHP for循环错误未定义的偏移量,php,loops,Php,Loops,下面的代码循环通过选中的复选框并执行和sql语句 if (isset($_POST['delete'])) { for($i=0;$i<$recordcount;$i++) { $deleteid = isset($_POST['checkbox'][$i]); echo "ID = ".$deleteid."<br />"; //Error c

下面的代码循环通过选中的复选框并执行和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);                  
   }
}
if(isset($\u POST['delete']))
{
对于($i=0;$iExecute($sqldelete);
}
}
这会运行sql查询,但它会尝试多次运行,即我选中两个复选框,sql会运行3次。因此,这会导致错误,因为ID为空。我还得到一个未定义的偏移量1


有什么建议吗?谢谢。

这句话肯定是错的:

$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
,在
$\u POST['checkbox']
上执行
foreach
,这一行肯定是错误的:

$deleteid = isset($_POST['checkbox'][$i]);
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);                  
       }
   }
}
也许你是这个意思

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

// rest of the code follows
此外,您可能还可以去掉
$recordcount
,并在
$\u POST['checkbox']
if(isset($\u POST['delete'])上执行
foreach
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);                  
       }
   }
}
{ 对于($i=0;$iExecute($sqldelete); } } }
如果(isset($\u POST['delete']),为了安全起见,请退出您的输入 { 对于($i=0;$iExecute($sqldelete); } } } 为了安全起见,请退出您的输入

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++;
        }

    }
if(isset($\u POST['delete']))
{
$i=0;
foreach($_POST['checkbox']作为$user)
{
$sqldelete=“从客户处删除,其中cus_ID=“.$user.”;
echo$sqldelete。“
”;//错误检查 $deleters=$conn->Execute($sqldelete); $i++; } }
试试这个

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++;
        }

    }
if(isset($\u POST['delete']))
{
$i=0;
foreach($_POST['checkbox']作为$user)
{
$sqldelete=“从客户处删除,其中cus_ID=“.$user.”;
echo$sqldelete。“
”;//错误检查 $deleters=$conn->Execute($sqldelete); $i++; } }
$recordcount是从SQL select语句返回的行数。isset()将在$deleteid中返回布尔值true或false,这真的是您想要的吗?我想检查是否按下了“delete”按钮,代码工作正常,但sql语句尝试执行一个超出要求的值。代码工作不正常:它将始终尝试删除cus_id 0和1,因为$deleteid布尔值将从fal转换为0或1se或true$recordcount是从SQL select语句返回的行数。isset()将在$deleteid中返回布尔值true或false,这真的是您想要的吗?我想检查是否按下了“delete”按钮,代码工作正常,但sql语句尝试执行一个超出要求的值。代码工作不正常:它将始终尝试删除cus_id 0和1,因为$deleteid布尔值将从fal转换为0或1是真的还是真的