Php PDO и использование объектов в execute

Модератор: Модераторы разделов

Аватара пользователя
Anguis
Сообщения: 212
ОС: Manjaro 17

Php PDO и использование объектов в execute

Сообщение Anguis »

Здравствуйте! Столкнулся с проблемой при использовании PDO.
Суть вот в чем: Есть класс, который используется с директивой PDO::FETCH_CLASS, В классе предопределено два приватных свойства и два метода, конструктор - который получает имя таблицы с которой работаем и дескриптор коннекта с базой и соответственно записывает их в свойства, и деструктор - который проверяет были ли изменены свойства и по результату либо записывает их обратно в базу либо просто уничтожает объект. Далее я создаю объект этого класса, PDO заполняет его свойствами вытянутыми из базы, выполняю над ним действия (меняю некоторые свойства) и уничтожаю объект, который должен перед смертью записать измененные данные методом, описанным вот тут. Т.е. объект, с которым работал засунуть обратно не переписывая его свойства в массив и т.д. Ну короче в стиле "тру" прогеров что-бы было лаконично и без лишних телодвижений и тут получаю исключение:

Код: Выделить всё

Invalid parameter number: number of bound variables does not match number of tokens'

Ну неужели из-за того что свойств в объекте больше, чем именованных шаблонов в запросе он не может записать туда только те, которые определены? Как-то невериццо..

привожу утрированный код для наглядности:

Код: Выделить всё

class NSUnit {

private $db;
private $dbname;

function __construct($name,$db){
$this->db = $db;
$this->dbname = $name;
}

function __destruct(){
//короче тут другой код
echo 'Объект сдох!';
$sql = 'UPDATE `'.$this->dbname.'` SET var0=:var0, var1=:var1 WHERE id=:id';
      $dbresult = $this->db->prepare($sql);
      $dbresult->execute((array)$this);
}
}

$STH = $PDO->query("Select * FROM `Content` WHERE `id`='1';");
$STH->setFetchMode(PDO::FETCH_CLASS, 'NSUnit', array('Content',$PDO));
$STH=$STH->fetch();
$STH->content = 'true';
die();
Спасибо сказали:
Аватара пользователя
Anguis
Сообщения: 212
ОС: Manjaro 17

Re: Php PDO и использование объектов в execute

Сообщение Anguis »

Короче ясно.. Гуру объектно-ориентированного php-программинга тут не тусуются :( Жаль..
Спасибо сказали: