2012-03-08 154 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人工掏挖,並試圖很多替代品後,我似乎無法到抓住這個變量。我希望我會犯新人的錯誤,並且忽略一些愚蠢的東西。感謝您的任何幫助!

編輯:類定義

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 2012-03-08 08:11:53

+0

問題很混亂。是變量'$ last_book'還是'$ tz_books'?因爲'$ last_book'是一個*數組*,而不是一個對象,如果我理解你的例子。 – deceze 2012-03-08 08:12:32

+0

你有班級定義嗎? author_id可能是一個私有屬性。另外,可能有一個getter方法。如果沒有,你可以製作一個。發佈你的班級定義,我會幫你。 – 2012-03-08 08:15:18

回答

0

你的結果對象似乎是書籍的陣列與1個元件。 嘗試

echo $tz_books[0]->author_id; 

順便說一句,它也看起來像你通過把單引號逃逸輸入。這不是一種可靠/推薦的方法。使用數據庫特定的轉義功能,如this

+0

謝謝!...作品,和偉大的信息給我。我已經脫離了另一個示例文件,不知道如何使用單引號是不可靠的。非常感激 :)! – mike 2012-03-08 08:34:44

+0

沒問題 - ) 它不僅僅是簡單的「可靠性」;有一個閱讀[這裏](http://ru.php.net/manual/en/security.database.sql-injection.php) – 2012-03-08 19:15:03