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

投稿の前後に使用issetします。PHP リンク

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 に答える