valor de checkbox en una matriz de correos no en la fila correcta de mysql

Hola, estoy tratando de convertir un campo de formulario de entrada en una checkbox. en el campo de entrada, ingreso 1 o 0, esto funciona bien y se almacena correctamente en la base de datos MySQL. Estoy tratando de cambiar el campo de entrada a una checkbox tan checked = 1 y unchecked =0 .

Cuando cambio la entrada en un valor de checkbox, no funciona correctamente. Los valores se almacenan en las filas incorrectas en mysql. Podría alguien ayudar por favor

  num_rows; printf("Result set has %d rows.\n", $count); // Count table rows ?> 
Id Name Lastname Paid
<input name="id[]" type="text" id="id" value=""> <input name="name[]" type="text" id="name" value=""> <input name="lastname[]" type="text" id="lastname" value=""> <input name="paid[]" type="text" id="paid" value=""> <input type="checkbox" name="paid[]" value="1"/>
real_escape_string($_POST['id']); foreach($_POST['id'] as $key=>$id) { $name = $_POST['name'][$key]; $lastname = $_POST['lastname'][$key]; $paid = $_POST['paid'][$key]; $stmt = $mysqli->prepare("UPDATE test_mysql SET name=?, lastname=?, paid=? WHERE id = ?"); $stmt->bind_param('ssss', $name, $lastname, $paid,$id); $stmt->execute(); } $stmt->close(); header("location:page.php"); } ?>

Todo funciona bien hasta que cambie la entrada pagada en una checkbox. Qué estoy haciendo mal. He comentado la entrada pagada como puede ver en el código y he añadido una entrada oculta llamada name=paid[] y checkbox name=paid[]

  <input type="checkbox" name="paid[]" value="1" /> 

ACTUALIZACIÓN Cuando la publicación paga [] no publica el valor de la checkbox no seleccionada = 0 gracias jon

SOLUCIONADO CON AYUDA DE @aimme

 <input type="hidden" class="checkbox_handler" name="paid[]" value="" /> <input type="checkbox" name="paidcheck[]" value="1" /> 

agregar JavaScript para cambiar el valor oculto

   $(document).on("change", "input[type='checkbox']", function() { var checkbox_val = ( this.checked ) ? 1 : 0; $(this).siblings('input.checkbox_handler').val(checkbox_val); }); 

¡gracias por tu ayuda!

Es porque los valores nulos de las casillas de verificación no se publican con el formulario en absoluto. Esto hace que la matriz cambie hacia arriba sin incluir los valores nulos. Use un cuadro de texto oculto con cada checkbox, ya que sin valores en el cuadro de texto, al menos el nulo se publicará con el formulario en el envío.

Aquí es cómo puedes lograr esto con Jquery

 < ?php echo '
'; print_r($_POST); echo '

'; $checked=0; ?>

/>