Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从结果集中绑定对象字段_Php_Sql_Oop_Resultset - Fatal编程技术网

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

我有以下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->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中的表示法。