首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将mysql_fetch_object()的结果传递给函数不起作用

问将mysql_fetch_object()的结果传递给函数不起作用
EN

Stack Overflow用户
提问于 2009-04-22 15:05:43
回答 3查看 1.2K关注 0票数 1

我有以下问题:

代码语言:javascript
复制
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));
}

这给出了row2Partner()中的错误:尝试获取非对象的属性

但是$row是一个对象!如果我在main函数中回显$row->PartnerID,它就可以工作。

有什么想法吗?

Thx马丁

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-04-22 15:15:02

如果您的结果返回多行,则您的对象将是多维的。我非常确定,如果你只想回应第一个,你可以做这样的事情:

代码语言:javascript
复制
public function row2Partner($row){ echo $row[0]->PartnerID; }

如果您只查找一个结果,我也会将我的查询限制在一个...

代码语言:javascript
复制
SELECT PartnerID, PartnerName FROM Partner LIMIT 1

如果您希望回显所有行(在多行的情况下),您可以这样做:

代码语言:javascript
复制
public function row2Partner($row){ 
    foreach($row as $result) {
        echo $result->PartnerID; 
    }
}

希望这能有所帮助。

PS只是作为附注,我倾向于在处理MySQL结果时使用关联数组--这对我来说更有意义。在这种情况下,您只需执行以下操作:

代码语言:javascript
复制
mysql_fetch_assoc($result)
票数 1
EN

Stack Overflow用户

发布于 2009-04-22 15:15:54

您确定mysql_query()已经成功执行了查询,并且确实返回了一行吗?这可能值得一查,例如:

代码语言:javascript
复制
//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
EN

Stack Overflow用户

发布于 2009-04-22 15:16:01

我能想到的最好的事情是,你可能需要通过引用来传递,而不是通过值。将函数声明更改为

代码语言:javascript
复制
public function row2Partner(&$row)

希望这能有所帮助,大卫

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/777692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档