Forum Webscript.Ru

Программирование => PHP => Тема начата: Grape от 15 Декабря 2003, 02:43:46

Название: Объекты...
Отправлено: Grape от 15 Декабря 2003, 02:43:46
Подскажите пожалуйста в чем мжет быть проблема. Выдает:
Цитировать
Fatal error: Call to a member function on a non-object

В этой строке:
Цитировать
if((!$this->db->query(\'TRUNCATE \'.$this->table)) && (!$this->db->query(\'DELETE FROM \'.$this->table))) die("phpDbTree error: ".$this->db->error());

Попытался разобрать по частям, выдает ошибку (для начала) на:
Цитировать
$this->db->query()

Функция:
Цитировать
print_r(get_object_vars($this));

Выдает:
Цитировать
Array
(
    [db] => Resource id #5
    => cms_rus_structure
   
[id] => struct_id
   
=> lft
   
=> rgt
    [level] => level
    [qryParams] =>
    [qryFields] =>
    [qryTables] =>
    [qryWhere] =>
    [qryGroupBy] =>
    [qryHaving] =>
    [qryOrderBy] =>
    [qryLimit] =>
    [sqlNeedReset] => 1
    [sql] =>
    [title] => title
)

Т.е. указатель подключения к базе данных передается.
Я использую классы: CDBTree (phpDBTree 1.1) и CDatabase (phpDatabase 2.1).
Название: Объекты...
Отправлено: Grape от 15 Декабря 2003, 03:00:17
Понял, там были грабли с подключением CDatabase.
[OFF]Да, с объектной моделью еще разбираться и разбираться... Да и с остальным тоже... :)[/OFF]
Название: Объекты...
Отправлено: Croaker от 15 Декабря 2003, 03:00:43
Если я ничего не путаю, $this->db - у тебя должен быть объектом, т.е. print $this->db должен выводить "object". А как он (this->db) у тебя определяется?
Название: Объекты...
Отправлено: Croaker от 15 Декабря 2003, 03:02:49
опаздал.. :)
Название: Объекты...
Отправлено: Grape от 15 Декабря 2003, 03:37:15
Если использовать данную функцию, то можно ли потом использовать mysql_fetch_array() или нужно mysql_fetch_object() ?
function showTree() {
$this->sql = \'SELECT \'.$this->id.\',\'.$this->left.\',\'.$this->right.\',\'.$this->level.\' FROM \'.$this->table.\' WHERE lft > 1 ORDER BY lft ASC\';
if(($query=$this->db->query($this->sql)) && ($this->db->num_rows($query) > 0))
return $query;
else die("phpDbTree error: ".$this->db->error());
}
Название: Объекты...
Отправлено: Croaker от 15 Декабря 2003, 03:49:14
а что есть возвращаемый функцией $query?
Не ясно, т.к. не видно метода $this->db->query().

А вообще самый быстрый метод выяснить - взять и попробовать сделать. ;)
Название: Объекты...
Отправлено: Grape от 15 Декабря 2003, 04:08:23
Вот я и делаю...:) А этот метод:
function query($sql) {
if(!$this->link) return 0;
return mysql_query($sql, $this->link);
}
Просто до сих пор туда и не добрался по ходу дела баги находятся...
Название: Объекты...
Отправлено: Grape от 15 Декабря 2003, 05:20:17
Все, я уже нашел.
Название: Объекты...
Отправлено: Grape от 15 Декабря 2003, 05:23:36
Там не зависит от применяемой функции так как передается ссылка на результат.
[OFF]Прверено - мин нет (с) непомню откуда, вроде анегдот :).[/OFF]