PHP for循环错误未定义的偏移量
下面的代码循环通过选中的复选框并执行和sql语句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
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是真的还是真的