2012-03-08 3 views
0

Используя следующее:PHP объект не может получить доступ к переменным

$last_book = tz_books::getLast($request->db, "WHERE book_id='{$request->book_id}'"); 

Я получаю следующий массив объектов PHP,

[0] => tz_books Object 
    (
     [db:tz_books:private] => com Object 

     [id] => 64BEC207-CA35-4BD2 
     [author_id] => 4F4755B4-0CE8-4251 
     [book_id] => 8FC22AA0-4A60-4BFC 
     [date_due] => variant Object 

    ) 

Затем я хочу использовать AUTHOR_ID, но по какой-то причине это не работаю ,

Попытка использовать:

$tz_books->author_id; 

Использование print_r ($ last_book); печатает массив на консоли просто отлично. И делая следующее только, чтобы видеть, правильно ли переменная используется:

$author = $tz_books->author_id; 
print_r($author); 

Ничто не выводится на консоль, и даже после того, как копаться в руководстве PHP и пытается много альтернатив, я не могу возьмите эту переменную. Я надеюсь, что я делаю ошибку новобранец и не замечаю что-то глупое. Спасибо за любую помощь!

Edit: Класс определение

private $db; 
public $id; 
public $author_id; 
public $book_id; 
public $date_due; 

public function __construct($db, $values=null) { 
    $this->db = $db; 
    if ($values != null) { 
     foreach ($values as $var => $value) { 
      $this->$var = $value; 
     } 
    } 
} 

public static function retrieveAll($db, $where='', $order_by='') { 
    $result_list = array(); 
    $query = 'SELECT '. 
      'id, '. 
      'author_id, '. 
      'book_id, '. 
      'date_due '. 
     "FROM tz_books $where $order_by"; 

    $rs = $db->Execute($query); 

    while (!$rs->EOF) { 
     $result_list[] = new tz_books($db, array(
      'id' => clean_id($rs->Fields['id']->Value), 
      'author_id' => clean_id($rs->Fields['author_id']->Value), 
      'book_id' => clean_id($rs->Fields['book_id']->Value), 
      'date_due' => $rs->Fields['date_due']->Value, 
     )); 
     $rs->MoveNext(); 
    } 
    $rs->Close(); 
    return $result_list; 
} 
+2

Я вижу это правильно? Если это так, попробуйте '$ last_book [0] -> author_id;' или '$ tz_books = $ last_book [0];' – ghbarratt

+0

Вопрос запутан. Является ли переменная '$ last_book' или' $ tz_books'? Поскольку '$ last_book' является * массивом *, а не объектом, если я понимаю ваш пример. – deceze

+0

У вас есть определение класса? Возможно, author_id является частной собственностью. Кроме того, может быть метод геттера. А если нет, вы можете это сделать. Отправьте определение своего класса, и я помогу вам. –

ответ

0

Ваш объект результата, как представляется, массив книг с 1 элементом. Попробуйте

echo $tz_books[0]->author_id; 

Кстати, это также выглядит, как вы спасаясь вход, поставив одиночные кавычки. Это не надежный/рекомендуемый метод. Используйте функцию выхода из базы данных, такую ​​как this

+0

спасибо! ... Работы и отличная информация для меня. Если бы у меня был другой файл с примерами, я понятия не имел, что использование одинарных кавычек таким образом не было надежным. Очень признателен :)! – mike

+0

без проблем O-) это немного более простая «надежность»; прочитать [здесь] (http://ru.php.net/manual/en/security.database.sql-injection.php) –

Смежные вопросы