Я получаю эту ошибку:
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(); }
Вы должны «упомянуть» все заполнители в вашем запросе
$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 заменяет только заполнители. Вы должны добавить эти заполнители к вашему запросу.