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


PHP bind object fields from result set

>我有以下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 的对象无法转换为字符串

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

你可以

试试

$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;

你应该使用$dog->NAME而不是$dog->$result->NAME