PHP绑定结果集中的对象字段

时间:2013-09-18 14:09:10

标签: php sql oop resultset

我有以下PHP类:

class Dog  
{  
   var $name;  
   var $age;  
   var $gender;
}  

我有以下sql语句:

$sql = 'Select NAME,VALUE from dog_Details where id = 1';  
$results = $this->db->query($sql);  
$dog = new Dog();
foreach($results as $result)  
{  
  $dog->$result->NAME = $result->VALUE;  //This fails
}  

PHP错误:

  

类stdClass的对象无法转换为字符串

问题: 如何从结果集动态绑定值?

2 个答案:

答案 0 :(得分:3)

你可以尝试

$dog->{$result->NAME} = $result->VALUE;

编辑:

我猜您的数据集是这样的:

ID   NAME   VALUE
--   ----   -----  
 1   name    Rex
 1   age     2
 1   gender  M

此方法使用variable-variable - 使用变量的内容作为另一个变量的名称

$dog->$result->NAME行中,PHP会首先尝试将->$result解析为variable-variable。显然PHP确实将$resultstdClass)投射到string,这就是您看到Object of class stdClass could not be converted to string错误的原因。

使用{$result->NAME}表示法让PHP知道->的预期解析顺序。

// when $result->NAME holds 'name'
$dog->{$result->NAME} = $result->VALUE;
// becomes $dog->name = $result->VALUE;

答案 1 :(得分:0)

您应该使用$dog->NAME代替$dog->$result->NAME