2010-12-08 3 views
0

У меня есть код ниже, который проходит через выбранные флажки и выполняет и sql-инструкцию.PHP for loop error Неопределенное смещение

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 работает 3times. Таким образом, это приводит к ошибке, поскольку идентификатор пуст. Я также получаю неопределенное смещение 1.

Любые советы? Благодарю.

+0

, что является $ RecordCount? – 2010-12-08 12:08:42

+0

$ recordcount - количество строк, возвращаемых из оператора SQL select. – Elliott 2010-12-08 12:11:18

+2

isset() вернет логическое значение true или false в $ deleteid, это действительно то, что вы хотите? – 2010-12-08 12:11:29

ответ

2
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);     
     } 
    } 
} 

И бежать ваш вход для безопасности

3

Эта линия, безусловно, не так:

$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 и сделать foreach над $_POST['checkbox'].

0

попробовать этот

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

    } 
Смежные вопросы