Çalışmayan bir işleve mysql_fetch_object (sonucu) geçmek

3 Cevap php

Ben şu sorun var:

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));
}

This gives me the error in row2Partner(): Trying to get property of non-object

But $row is an Object! And if I do echo $row->PartnerID in the main function, it works.

Herhangi bir fikir?

Thx, Martin

3 Cevap

Lütfen sonuç tek satırdan daha fazla dönerse, nesne çok boyutlu olacak. Ben sadece ilkini yankı istiyorum eğer böyle bir şey yapabilirim eminim:

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

Eğer sadece tek bir sonuç arıyorsanız, ben de sadece bir benim sorgu sınırlamak olur ...

SELECT PartnerID, PartnerName FROM Partner LIMIT 1

Eğer sonuç (birden durumunda) tüm satırları echo istiyorsanız, bunu yapabilirsiniz:

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

Umut olur.

PS Just as a sidenote, I tend to like to use associative arrays when dealing with MySQL results--it just makes more sense to me. In this case, you would just do this instead:

mysql_fetch_assoc($result)

Eğer mysql_query (), bir satır aslında var iade ediliyor olması da başarıyla sorgu yürütülen ve emin misiniz? Bu değer, örneğin, onu kontrol olabilir

//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());
}

Aklıma en iyi şey, çok değer ziyade referans geçmek gerekebilir olmasıdır. Için işlev bildirimi değiştirin

public function row2Partner(&$row)

Hope that helps, David