0

このエラーが発生します:

Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /FondManager.class.php on line 69

これを実行しようとすると:

$Fond_Modif = $Manager->get($id);
$Fond_Modif->setContactname($_POST['name']);
$Manager->update($Fond_Modif);

関連するクラスは次のとおりです。

 public function update(Fond $Fond)
  {
    $q = $this->_db->prepare('UPDATE fonds SET Name, ContactName, ContactPosition, ContactMail, ContactPhone, Website, MinTic, MaxTic WHERE id = :id');

    $q->bindValue(':id', $Fond->id());
    $q->bindValue(':name', $Fond->name(), PDO::PARAM_INT);
    $q->bindValue(':contactname', $Fond->contactname(), PDO::PARAM_INT);
    $q->bindValue(':contactposition', $Fond->contactposition(), PDO::PARAM_INT);
    $q->bindValue(':contactmail', $Fond->contactmail(), PDO::PARAM_INT);
    $q->bindValue(':contactphone', $Fond->contactphone(), PDO::PARAM_INT);
    $q->bindValue(':website', $Fond->website(), PDO::PARAM_INT);
    $q->bindValue(':mintic', $Fond->mintic(), PDO::PARAM_INT);
    $q->bindValue(':maxtic', $Fond->maxtic(), PDO::PARAM_INT);

    $q->execute();
  }
4

1 に答える 1

7

クエリですべてのプレースホルダーを「言及」する必要があります

$q = $this->_db->prepare("UPDATE fonds 
                          SET Name = :name,
                          ContactName = :contactname,  
                          ContactPosition = :contactposition, 
                          ContactMail = :contactmail,
                          ContactPhone = :contactphone, 
                          Website = :website
                          MinTic = :mintic, 
                          MaxTic = :maxtic
                          WHERE id = :id");

PDO はプレースホルダーのみを置き換えます。そのプレースホルダーをクエリに追加する必要があります。

于 2012-11-29T18:19:31.427 に答える