2014-04-25 97 views

回答

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(); 
+0

這實際上是我正在做的事情,但如果該字段爲空,並且屬性未定義,那麼您將獲得'Notice:Undefined property:stdClass :: SomeField'。 'FETCH_ASSOC'是否以不同的方式處理空值? – Nick

+0

@Nick你是否爲StdClass中的null屬性設置了默認值? –

+0

*您可以設置「StdClass」的默認值嗎? – Nick

相關問題