0

我有一个 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)>0 有关,但我实际上不知道如何解决这个问题。我尝试放置一个 else 子句将其重定向到另一个页面,但它会导致相同的错误。谁能告诉我该怎么办??

4

2 回答 2

1

在你的帖子周围使用一个issetPHP 链接

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

如果发送了任何数据,即使是空白表单,isset($_POST)也将返回 true,但 acount($_POST)为 0。因此,您还可以测试您要查找的数组的确切项目,以确保它实际上在$_POST

if( isset($_POST) && count($_POST) > 0 && isset($_POST['library'])){
 ....
于 2013-02-05T16:04:23.617 回答
0

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

于 2013-02-05T16:08:26.667 回答