我有以下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的对象无法转换为字符串
问题: 如何从结果集动态绑定值?
答案 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确实将$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;
答案 1 :(得分:0)
您应该使用$dog->NAME
代替$dog->$result->NAME