没有选中复选框时发生错误(在PHP中)

时间:2013-02-05 16:00:36

标签: php checkbox

我有一个PHP代码,我的数据库中的数据被提取到一个数组中,每个数据都有一个复选框。我已经有代码可以更新我的表(对于每个检查的数据):

<?php
include("connect.php");
$user=$_SESSION['username'];
$updated = FALSE;
$submit=FALSE;
if(count($_POST) > 0){

$library = $_POST['library'];
array_map('intval',$library);
$library = implode(',',$library);
mysql_query("UPDATE ES_Students SET library=0") or trigger_error(mysql_error

(),E_USER_ERROR);
mysql_query("UPDATE ES_Students SET library=1 WHERE StudentNO IN ($library)") or        trigger_error

(mysql_error(),E_USER_ERROR);
$submit=TRUE;
$updated=TRUE;
}
?>

我的问题是,每当没有选中复选框时,都会发生错误,即库索引未定义且全部错误。我知道它与$ count($ _ POST)&gt; 0有关但我实际上并不知道如何解决这个问题。我尝试将一个else子句重定向到另一个页面,但它会导致同样的错误。谁能告诉我该怎么办?

2 个答案:

答案 0 :(得分:1)

在帖子周围使用issetPHP link

if( isset($_POST) && count($_POST) > 0){
  ....

如果有任何数据发送,即使是空白表单,isset($_POST)也会返回true,但count($_POST)为0.所以,您还可以测试数组的确切项目正在寻找确保它在$_POST

中的实际情况
if( isset($_POST) && count($_POST) > 0 && isset($_POST['library'])){
 ....

答案 1 :(得分:0)

你应该检查$ _POST ['library']是否包含任何项,因为如果它是空的,那么implode函数返回一个空字符串,你的查询看起来像...... IN(),这是无效的sql语法。< / p>