2009-04-22 28 views
1

I次のような問題があります。パス結果は動作しません

public function row2Partner($row){ 
    echo $row->PartnerID; 
} 

public function main(){ 
    $query = "SELECT PartnerID, PartnerName FROM Partner"; 
    $result = mysql_query($query); 
    $this->row2Partner(mysql_fetch_object($result)); 
} 

これは、r ow2Partner()に私にエラーを与える:非オブジェクトのプロパティを取得しようとすると

しかし、$rowはオブジェクトです!そして、もし私が echo $row->PartnerIDをmain関数で実行すると動作します。

アイデア?

Thxを、 マーティン

答えて

1

あなたの結果は複数の行を返す場合は、あなたのオブジェクトは多次元になるだろう。私はあなただけの最初のものをエコーし​​たい場合は、このような何かを行うことができますかなり確信している:

一つだけの結果を探しているなら、私もちょうど1に私のクエリを制限する...

SELECT PartnerID, PartnerName FROM Partner LIMIT 1 

すべてのあなたの行(複数の場合)の結果をエコーし​​たい場合は、あなたがこれを行うことができます:

public function row2Partner($row){ 
    foreach($row as $result) { 
     echo $result->PartnerID; 
    } 
} 

お役に立てば幸いです。

PS だけ追記として、私は、MySQLの結果を扱うときに連想配列を使用するようにする傾向がある - それはちょうど私には多くの意味があります。この場合は、あなただけの代わりにこれを行うだろう:

mysql_fetch_assoc($result) 
+0

がよさそうです。これはうまくいく - 私は関数が2回呼び出されたという問題がありました。有効な$行データで1回、空の1回で1回です。 すばやく返信いただきありがとうございます。 –

0

あなたがするmysql_query()が成功したクエリを実行したことを確認し、また、実際に行が返されるがあることはありますか?それをチェックする価値があります。

//check query executed ok 
if ($result = mysql_query($query)) { 
    //check there is actually a row 
    if ($row = mysql_fetch_object($result)) { 
     $this->row2Partner($row); 
    } else { 
     //no data 
    } 
} else { 
    //error 
    die(mysql_error()); 
} 
0

私が考えることができる最も良いことは、価値よりもむしろ参照によって渡す必要があるかもしれないということです。助け

public function row2Partner(&$row) 

希望、 ダビデにあなたの関数の宣言を変更

関連する問題