2012-03-08 4 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

+0

を試してみてください。変数 '$ last_book'や' $ tz_books'はありますか? '$ last_book'はオブジェクトではなく*配列*なので、私があなたの例を理解しているならば。 – deceze

+0

クラス定義はありますか? author_idがプライベートプロパティである可能性があります。また、ゲッターメソッドがあるかもしれません。そうでなければ、あなたは1つを作ることができます。あなたのクラス定義を投稿すると、私はあなたを手伝ってくれます。 –

答えて

0

あなたの結果オブジェクトは、1つの要素と本の配列のようです。あなたは、単一引用符を入れて入力をエスケープしているよう ところで

echo $tz_books[0]->author_id; 

を試してみて、それがまた見えます。これは信頼できる方法ではありません。 thisのようなデータベース固有のエスケープ機能を使用する

+0

ありがとう!...私のための作品、そして素晴らしい情報。私が持っていた別のサンプルファイルを出していたのですが、その方法でシングルクォートを使用することは信頼できませんでした。とても有難い :)! – mike

+0

問題ありませんO-) これは単純な "信頼性"以上のものです。読んで[ここ](http://ru.php.net/manual/en/security.database.sql-injection.php) –

関連する問題