我有一个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子句重定向到另一个页面,但它会导致同样的错误。谁能告诉我该怎么办?
答案 0 :(得分:1)
在帖子周围使用isset
。 PHP 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>