0

私がこれまでに持っているのは(私が信じていることです)作業ループであり、反復して正しいID(var_dumpで確認)を取得していますが、SQLクエリはIDをDELETEキーとして取得していません。基本的に、SQL クエリは、id = 配列反復の現在の id 値の場所を削除しています。マルチチェックボックスを使用します。var dump は、ID がアップロード ID と一致することを確認していますが、削除を行うことはできません。コードは次のとおりです。

       function submit_delete() {
      if(!is_null($_POST['delete']) && !is_null($_POST['checkbox'])) { //Check to see if a     delete command has been submitted.
    //This will dump your checkbox array to your screen if the submit works.
    //You can manually check to see if you're getting the correct array with values
   // var_dump($_POST['checkbox']);//Comment this out once it's working.
    $id_array = $_POST['checkbox'];
    //var_dump($id_array);
    deleteUploads($id_array);

  }
  else {
    echo "Error: submit_delete called without valid checkbox delete.";//var_dump($_POST['checkbox']);
  }
}


function deleteUploads ($id_array) {
  if (count($id_array) <= 0) {   echo "Error: No deletes in id_array!"; echo 'wtf'; }
  //return; }//bail if its empty
  require_once ('../mysqli_connect.php'); //Connect to the db

  $delete_success = false; var_dump($delete_success);
  foreach ($id_array as $id) { var_dump($id);
    $remove = "DELETE FROM upload WHERE upload_id= $id";//AND `owner_id`=".$_SESSION['user_id'];
    $result = mysqli_query ($dbc, $remove); // Run the query
    //
    ////$mysqli->query($sql) or die(mysqli_error($mysqli));
    if ($result) { $delete_success = true; var_dump($delete_success);}
    mysqli_close($dbc);
  }



  if($delete_success == true) { echo 'done';
    header('Location: newwriter_profile.php');
  } else {
    echo "Error: ".mysqli_error();
  }
}


//Test deleteUploads (remove once you know the function is working)
//$test_ids = array();
//$test_ids[] = 5;//make sure this id is in the db
//$test_ids[] = 7;//this one too
submit_delete();
//deleteUploads($id_array);//should remove ids 10 and 9//

mysqli_close($dbc);
4

1 に答える 1

1

mysqli_close($dbc);関数からステートメントを削除する必要がありますdeleteUploads()。私はまた、あなたが人々の答えを受け入れることに取り組むべきであることにも同意します. 9 つの質問をしましたが、13 の回答のうちの 1 つを受け入れていません。これは本当にフェアプレーではありません。

編集 スクリプトをすばやく実行し、少し移動しました。これは有用な情報を提供しますか?

<?
$msgs[] = 'Log: Started';
require_once('../mysqli_connect.php');

function submit_delete()
{
    global $msgs;
    if(!is_null($_POST['delete']) && !is_null($_POST['checkbox']))
    {
        $msgs[] = "Log: submit_delete called with valid checkbox delete.";
        $id_array = $_POST['checkbox'];
        deleteUploads($id_array);
    }else{
        $msgs[] = "Error: submit_delete called without valid checkbox delete.";
    }
}

function deleteUploads ($id_array)
{
    global $msgs;
    if (count($id_array) <= 0)
    {
        $msgs[] = "Error: No deletes in id_array!";
    }else{
        $msgs[] = "Log: Deletes in id_array!";
    }

    $delete_success = false;
    foreach ($id_array as $id)
    {
        $msgs[] = "Log: Processing id: ".$id;
        $remove = "DELETE FROM upload WHERE upload_id = $id";
        $result = mysqli_query ($dbc, $remove);
        if ($result)
        {
            $msgs[] = 'Log: delete success = true';
            header('Location: newwriter_profile.php');
        }else{
            $msgs[] = 'Error: '.mysqli_error();
        }
    }
}

submit_delete();

if(!@mysqli_close($dbc))
{
    $msgs[] = 'Error: mysqli_close failed';
}
echo implode('<br>',$msgs);
?>
于 2012-07-13T06:15:39.143 に答える