>我有以下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确实将$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;
你应该使用$dog->NAME
而不是$dog->$result->NAME