首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么class_name为null时mysql_fetch_object会失败,尽管这是默认设置?

为什么class_name为null时mysql_fetch_object会失败,尽管这是默认设置?
EN

Stack Overflow用户
提问于 2011-07-26 11:28:10
回答 3查看 287关注 0票数 0

我正在尝试编写一个简单的数据库包装类。我写了一个方法,如下所示:

代码语言:javascript
复制
public function get_objects($sql, $class_name = null) {
    $result = mysql_query( $sql, $this->connection );
    $objs = array();
    if( $result ) {
        while ($obj = mysql_fetch_object($result, $class_name)) {
            $objs[] = $obj;
        }
        mysql_free_result($result);
    }
    return $objs;
}

如果在调用此方法时未指定$class_name,则对mysql_fetch_object的调用将失败,并显示以下错误:

代码语言:javascript
复制
PHP Fatal error:  Class '' not found in ...

问题是我不想让它使用class_name。我只想让它执行默认行为,就像我没有指定class_name一样。

为什么这是失败的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-26 11:35:59

缺省值不是null。默认值为stdClass (来自文档):

要实例化的类的名称,设置的属性并返回。如果未指定,则返回stdClass对象。

如果你想保持相同的默认值,你需要将这个作为你的方法签名:

代码语言:javascript
复制
 public function get_objects($sql, $class_name = "stdClass") {
     // continue as normal.
票数 3
EN

Stack Overflow用户

发布于 2011-07-26 11:30:46

如果不想指定特定的类,那么为什么还要使用class_name参数呢?

如果你一定要使用它,这应该是可行的

代码语言:javascript
复制
if ( $result ) {
   $class_name = $class_name ? $class_name : 'stdClass';
   ...
票数 2
EN

Stack Overflow用户

发布于 2011-07-26 11:33:05

也许是因为它需要一个字符串,而你给了它null。我会做一个if检查,看看$class_name!=null。

代码语言:javascript
复制
public function get_objects($sql, $class_name = null) {
    $result = mysql_query( $sql, $this->connection );
    $objs = array();
    if( $result ) {
        if ($class_name){
            while ($obj = mysql_fetch_object($result, $class_name)) {
                $objs[] = $obj;
            }
        }else{
            while ($obj = mysql_fetch_object($result)) {
                $objs[] = $obj;
            }
        }
        mysql_free_result($result);
    }
    return $objs;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6824920

复制
相关文章

相似问题

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