web関連
【PHP】データベースからデータを取得して表示しようとしたらstdClassクラスが云々ってエラーが出た
wordpressでSQL使ってデータを取得して出力しようとしたら「Recoverable fatal error: Object of class stdClass could not be converted to string in…
」というエラーが出た
データベースから取得した値を出力したい
$results
にデータベースから取得した値を入れていたんだけど、アクセス方法がわからずに苦戦。
var_dump($results)
を使い中身を見ると以下のように値が格納されていた。
array(1) {
[0]=>
object(stdClass)#8347 (1) {
["count(keyname)"]=>
string(1) "2"
}
}
配列なので$results[0]
でアクセスするところまでわかったが「object(stdClass)
」とはなんだ?
解決方法:「stdClass」のアクセス方法
調べるに、stdClass
はPHP標準のClassでデータベースから取ってくるデータがstdClass
の配列らしい。
アクセス方法は、「波括弧{}
」使ってアクセスする。
echo $results[0]->{"count(keyname)"};// 取得できた!
count(keyname)
がメソッドだと勘違いされるから波括弧{}
が必要。- キーが
count
だけなら$results[0]->count
でもアクセスできるよう。
おまけ:「foreach()」で回してみた
どうすればアクセスできるか試行錯誤していた時のコード。
foreach()
使って回してみた。
foreach ($results as $object) {
var_dump($object);// object(stdClass)#8347 (1) { ["count(keyname)"]=> string(1) "2" }
foreach ($object as $obj) {
var_dump($obj);// string(1) "2"
echo $obj;// 取得できた!
}
}
2回回さないと取得できなかった…