PDO :: FETCH_OBJ是否可以将空字段的值设置为null而不是将属性保留为undefined?

时间:2014-04-25 03:42:01

标签: php mysql pdo

如果您:

  1. 左边加入一个表作为查询的一部分

  2. 并使用$W = $stmt->fetch(PDO::FETCH_OBJ)循环结果

  3. 并且有一个字段ColumnName,其值为空,因为无法为当前行创建连接。

  4. 然后未定义属性$W->ColumnName

    是否存在PDO设置,其中null的列可以将其属性在获取的对象中定义为null?

1 个答案:

答案 0 :(得分:0)

而不是使用PHP标准类来检索值,您可以使用实体类,如下所示。

Class customer {

    protected $_email;

    public function __construct(array $config = array()){
         $this->setOptions($config);
     }

    public function getEmail(){
        return $this->_email;
    }

    public function setEmail($email){
        $this->_email = $email;
    }

    public function setOptions(array $options)
    {
        $_classMethods = get_class_methods($this);
        foreach ($options as $key => $value) {
            $method = 'set' . ucfirst($key);
            if (in_array($method, $_classMethods)) {
                $this->$method($value);
            } else {
                throw new Exception('Invalid method name');
            }
        }
        return $this;
    }

    public function setOption($key, $value){
        return $this->setOptions(array($key, $value));
    }
}

现在你可以做到这一点。

$W = $stmt->fetch(PDO::FETCH_ASSOC);
$customer = new Customer($w);

现在访问属性将返回null或实体类中设置的默认值。即使它在查询结果中未定义。

$customer->getEmail();