- ベストアンサー
ブログサイトのエラーについて
- YouTubeを参考にして作成したブログサイトでエラーが発生しています。ソースコードとエラーメッセージを提供します。
- ブログサイトのエラーメッセージは「Fatal error: Uncaught Error: Object of class Blog could not be converted to string」というものです。
- エラーメッセージの原因や解決策についてアドバイスをいただきたいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#1の方が書かれているのをもっとわかりやすく書くとこういうこと。 $this->table_name $this->$table_name この2つ、あなたには同じに見えますか?
その他の回答 (4)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
>blog.phpも提示します。 こっちのソースもっとひどい。 ミス、そこまではひどくないか。 ただ、これをおかしいのか、おかしくないのか?は 文献読む前に感じられるようになってから、 プログラムをはじめましょう! 基礎をわからないようでは、そもそも説明が出来ないのですよ。 あなたが、「何を言ってるかわからない」って 感じてるなら、むしろそうでしょうから。 ってことで、頑張って。 (なお、今の考えを続ければ、少なくともあなたの力では これは、完成しません。せいぜい、他人が直してくれるのを 待つだけ=つまり、貴方が作った事にはならないので、 完成はしないってことです)
お礼
ご回答誠にありがとうございます。 今後とも宜しくお願い申し上げます。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
>どう変えればいいでしょうか??? さっき言った通り変更です。 >blog.phpも提示します。 こっちのソースもっとひどい。 動くのは、当分先か、永遠に動かないかのどちらかです。 みてて、「おかしい」って感じるようになってください。 貴方に回答をしていた他の方も同じように感じてると思います。
お礼
ご回答誠にありがとうございます。 今後とも宜しくお願い申し上げます。
- wormhole
- ベストアンサー率28% (1626/5665)
>YouTubeの説明がレベルが高く、またファイルの遷移が早いので、 >私自身、訳解らなくなっています。 そんな状態ならphpの入門書を購入して基本から勉強した方がよくないですか? あなたはphpの勉強とblogの作り方を同時にこなせるほど器用ではないでしょうから、まずはphpの基礎から学んだ方が絶対にいいと思うのですけど。 「ファイルの遷移が早い」に関してはYouTubeなんですから再生停止するなり巻き戻して見るなりすればいいだけ・・・ >必死に転記しました。 転記は必要ですけど本来必死にならないといけないのは、そこではなくて、その内容を理解することなんですが・・・ >require_once('blog.php'); blog.phpは?
お礼
ご回答誠にありがとうございます。 今後とも宜しくお願い申し上げます。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
また、話聞いてない(聞いていると言ってるかもしれないが、自分の目線でしか見てない) //①SQLの準備 $sql = "SELECT * FROM $this->table_name"; $stmt = $dbh->prepare("SELECT * FROM $this->$table_name Where id = :id"); なぜ、2種類の書き方をしてるのか?と オブジェクトクラス内の変数を参照変数で読めって 本当に指示されたのか?を確認しろ!って 前回答えた通りです。 さらに、今回の問題はそこだけのエラーですが。 このプログラムはほかにもバグが多く、そもそも動きません。 体でおかしいな?って感じられるようになりましょう。
お礼
ご回答誠にありがとうございます。 「ここはprepareを使わないとダメです。」 とは言いました。 どう変えればいいでしょうか???
補足
blog.phpも提示します。 <?php require_once('dbc.php'); class Blog extends Dbc { protected $table_name = 'blog'; //カテゴリー名を表示 //引数:数字 //返り値:カテゴリーの文字列 function setCategoryName($category) { if ($category == '1') { return '日常'; } elseif ($category == '2') { return '非日常'; } else { return 'その他'; } } public function blogCreate($blogs) { $sql = "INSERT INTO $this->table_name(title,content,category,publish_status) VALUES (:title, :content, :category, :publish_status)"; $dbh = dbConnect(); $dbh->biginTransaction(); try { $stmt = $dbh->prepare($sql); $stmt->bindValue(':title', $blogs['title'], PDO::PARAM_STR); $stmt->bindValue(':content', $blogs['content'], PDO::PARAM_STR); $stmt->bindValue(':category', $blogs['category'], PDO::PARAM_INT); $stmt->bindValue(':publish_status', $blogs['publish_status'], PDO::PARAM_INT); $stmt->bindValue(':id', $blogs['id'], PDO::PARAM_INT); $stmt->execute(); $stmt->commit(); echo 'ブログを投稿しました!'; } catch (PDOException $e) { $dbh->rollBack(); exit($e); } function blogUpdate($blogs) { $sql = "UPDATE $this->table_name SET title = :title, content = :content, category = :category, publish_status = :publish_status Where id = :id"; $dbh = dbConnect(); $dbh->biginTransaction(); try { $stmt = $dbh->prepare($sql); $stmt->bindValue(':title', $blogs['title'], PDO::PARAM_STR); $stmt->bindValue(':content', $blogs['content'], PDO::PARAM_STR); $stmt->bindValue(':category', $blogs['category'], PDO::PARAM_INT); $stmt->bindValue(':publish_status', $blogs['publish_status'], PDO::PARAM_INT); $stmt->bindValue(':id', $blogs['id'], PDO::PARAM_INT); $stmt->execute(); $stmt->commit(); echo 'ブログを更新しました!'; } catch (PDOException $e) { $dbh->rollBack(); exit($e); } } //ブログのバリデーション function blogValidate($blogs) { if (empty($blogs['title'])) { exit('タイトルを入力してください。'); } if (mb_strlen($blogs['title']) > 191) { exit('タイトルは191文字以下にしてください。'); } if (empty($blogs['content'])) { exit('本文を入力してください。'); } if (empty($blogs['category'])) { exit('カテゴリーは必須です。'); } if (empty($blogs['publish_status'])) { exit('公開ステータスは必須です。'); } } } } ?>
お礼
ご回答誠にありがとうございます。 今後とも宜しくお願い申し上げます。 ご親切にどうもありがとうございました。