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回回さないと取得できなかった…

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。