1

エラーが発生しましたが、何が間違っているのかわかりません。これで助けてください:)だから、Activitiesという名前のクラスがあり、その中には次のような関数がいくつかあります。

class Activities
{
  public $content = null;

  public function __construct( $data=array() ) {
    if ( isset( $data['content'] ) ) $this->content = $data['content'];
  }

  public function storeFormValues ( $params ) {

    $this->__construct( $params );

  }

  public static function getData() {
    $conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
    $sql = "SELECT * FROM exceptions WHERE name = 'atrakcje'";
    $st = $conn->prepare( $sql );
    $st->execute();
    $row = $st->fetch();
    $conn = null;
    if ( $row ) return new Activities( $row );
  }

  public function update() {

    $conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
    $sql = "UPDATE exceptions SET content=:content WHERE name = 'atrakcje'";
    $st = $conn->prepare ( $sql );
    $st->bindValue( ":content", $this->content, PDO::PARAM_STR );
    $st->execute();
    $conn = null;
  }
}

そして、私が作成した小さな管理パネルに関数 editActivities() があります。

function editActivities() {

  $results = array();
  $results['pageTitle'] = "Edytuj Atrakcje";
  $results['formAction'] = "editActivities";

  if ( isset( $_POST['saveChanges'] ) ) {

    $activities->storeFormValues( $_POST );
    $activities->update();
    header( "Location: admin.php?action=editActivities&status=changesSaved" );

  } elseif ( isset( $_POST['cancel'] ) ) {

    header( "Location: admin.php?action=editActivities" );

  } else {

    $results['activities'] = Activities::getData();
    require( TEMPLATE_PATH . "/admin/editActivities.php" );

  }
}

また、変更を加えるための HTML フォームもあります。しかし、記入済みのフォームを送信すると、エラーが発生します。

Fatal error: Call to a member function storeFormValues() on a non-object in C:\xampp\htdocs\admin.php on line 285

私のコードの285行はここにあります:

if ( isset( $_POST['saveChanges'] ) ) {

    $activities->storeFormValues( $_POST );
    $activities->update();

何が起こっているのかわかりません。他の記事とユーザーを編集するための同じコードがあり、ここで何が悪いのかわかりません。ご協力いただきありがとうございます!

4

2 に答える 2

1

$activitiesはインスタンス化されていないため、そのインスタンス メソッドのいずれかを呼び出すことはできません。あなたはそれをインスタンス化する必要があります

$activities = new Activities($_POST);

また、静的関数では、の値に応じてgetData、または NULL を返します。ただし、これによりオブジェクトが作成される場合と作成されない場合があり、処理が難しく、同じエラーが再び発生する可能性があります。Activities$row$results['activities']

于 2013-06-07T22:08:10.183 に答える
0

追加

$activities = new Activities();
$activities->storeFormValues( $_POST );
....
于 2013-06-07T21:58:12.573 に答える