Передача результата mysql_fetch_object () в функцию не работает - PullRequest
1 голос
/ 22 апреля 2009

У меня следующая проблема:

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 в основной функции, работает.

Есть идеи?

Thx, Martin

Ответы [ 3 ]

1 голос
/ 22 апреля 2009

Если ваш результат возвращает более одной строки, ваш объект будет многомерным. Я почти уверен, что вы можете сделать что-то подобное, если захотите повторить первый:

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

Если вы ищете только один результат, я бы ограничил свой запрос только одним ...

SELECT PartnerID, PartnerName FROM Partner LIMIT 1

Если вы хотите отобразить результаты всех ваших строк (в случае нескольких), вы можете сделать это:

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

Надеюсь, это поможет.

PS Так же, как sidenote, я склонен использовать ассоциативные массивы при работе с результатами MySQL - для меня это имеет больше смысла В этом случае вы бы просто сделали это вместо:

mysql_fetch_assoc($result)
0 голосов
/ 22 апреля 2009

Лучшее, что я могу придумать, это то, что вам, возможно, придется передавать по ссылке, а не по стоимости. Измените объявление вашей функции на

public function row2Partner(&$row)

Надеюсь, это поможет, David

0 голосов
/ 22 апреля 2009

Вы уверены, что 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());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...