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 に答える