PHP从结果集中绑定对象字段
我有以下PHP类:PHP从结果集中绑定对象字段,php,sql,oop,resultset,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) { $do
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->NAME
而不是$dog->$result->NAME您应该使用$dog->NAME
而不是$dog->$result->NAME您可以尝试
$dog->{$result->NAME} = $result->VALUE;
编辑:
我猜您的数据集是这样的:
ID NAME VALUE
-- ---- -----
1 name Rex
1 age 2
1 gender M
这种方法利用变量
——使用一个变量的内容作为另一个变量的名称
在$dog->$result->NAME
行中,PHP将首先尝试将->$result
解析为变量。显然,PHP确实将$result
(即stdClass
)转换为string
,这就是为什么您看到stdClass类的对象无法转换为string
错误的原因
使用{$result->NAME}
符号可以让PHP知道->
的预期解析顺序
// when $result->NAME holds 'name'
$dog->{$result->NAME} = $result->VALUE;
// becomes $dog->name = $result->VALUE;
你可以试试
$dog->{$result->NAME} = $result->VALUE;
编辑:
我猜您的数据集是这样的:
ID NAME VALUE
-- ---- -----
1 name Rex
1 age 2
1 gender M
这种方法利用变量
——使用一个变量的内容作为另一个变量的名称
在$dog->$result->NAME
行中,PHP将首先尝试将->$result
解析为变量。显然,PHP确实将$result
(即stdClass
)转换为string
,这就是为什么您看到stdClass类的对象无法转换为string
错误的原因
使用{$result->NAME}
符号可以让PHP知道->
的预期解析顺序
// when $result->NAME holds 'name'
$dog->{$result->NAME} = $result->VALUE;
// becomes $dog->name = $result->VALUE;
这最终给了我以下信息:Dog对象([name]=>[age]=>[gender]=>[name]=>RexA刚刚看到了您代码中的错误,为了帮助您进一步实现功能,您必须更加具体,结果应该是什么样子,现在看起来是什么样子。它导致了一个错误,正如我在代码中所说的,再具体不过了。这最终给了我以下信息:Dog Object([姓名]=>[年龄]=>[性别]=>[姓名]=>RexA刚刚看到了代码中的错误,为了帮助您进一步实现功能,您必须更加具体,结果应该是什么样子,现在看起来是什么样子。它导致了一个错误,正如我在代码中所说的,没有比这更具体的了。很高兴了解PHP中的表示法。很高兴了解PHP中的表示法。