0

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

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

4

2 回答 2

3

你可以试试

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

编辑:

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

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

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

在该$dog->$result->NAME行中,PHP 将首先尝试解析->$resultvariable-variable. 显然 PHP 确实将$result(即stdClass)转换为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;
于 2013-09-18T14:18:07.143 回答
0

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

于 2013-09-18T14:12:59.777 回答