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の配列とのこと

とりあえず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回回さないと取得できないな…
次、直にアクセスする方法

echo $results[0]->{"count(keyname)"};// 取得できた!

波括弧{}使ってアクセスするみたいね
count(keyname)がメソッドだと勘違いされるから波括弧{}が必要みたい
キーがcountだけだったら
$results[0]->countでもアクセスできるっぽい

知らなかった…

Leave a Comment

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

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