Php PDO::FETCH_OBJ是否可以将null字段的值设置为null,而不是保留未定义的属性?
如果您:Php PDO::FETCH_OBJ是否可以将null字段的值设置为null,而不是保留未定义的属性?,php,mysql,pdo,Php,Mysql,Pdo,如果您: 将表作为查询的一部分左键联接 并使用$W=$stmt->fetch(PDO::fetch_OBJ)循环结果 并且有一个字段,ColumnName,其值为空,因为无法为当前行进行联接 然后属性$W->ColumnName将被取消定义 是否存在PDO设置,其中null列可以在获取的对象中将其属性定义为null?而不是使用PHPs标准类来检索值,您可以使用如下所示的实体类 Class customer { protected $_email; public functio
$W=$stmt->fetch(PDO::fetch_OBJ)
循环结果ColumnName
,其值为空,因为无法为当前行进行联接$W->ColumnName
将被取消定义
是否存在PDO设置,其中null列可以在获取的对象中将其属性定义为null?而不是使用PHPs标准类来检索值,您可以使用如下所示的实体类
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();
这实际上就是我正在做的,但是如果字段为null,因此属性未定义,则会得到
注意:未定义的属性:stdClass::SomeField
。FETCH\u ASSOC
是否以不同的方式处理空值?@Nick是否为StdClass中的null属性设置默认值?能否为StdClass
设置默认值?@Nick是。但您最终将创建一个类似于上述实体类的实体类。@Nick,这样您就可以创建实体类并分配一个默认值,或将其留空为null,从数据库中获取记录,将其分配给实体类,验证数据并使用它。