ブログサイト。2つのソースコードをご覧ください。
いつも大変お世話になり誠にありがとうございます。
標記の件。
YouTubeを参考にブログサイトに挑戦しております。
YouTubeの説明がレベルが高く、またファイルの遷移が早いので、
私自身、訳解らなくなっています。
必死に転記しました。
しかし、どうしてもエラーが出ます。
もうギブアップしようかなと思いましたが、ぶしつけな質問ですが、皆様に教えを乞うと思いました。
参考サイトを勉強しましたがあまり役に立たないと思いました。
2つのファイルのソースコードを提示します。
また添付はそこから詳細をクリックすると次のように
エラーになります。
Fatal error: Uncaught Error: Object of class Blog could not be converted to string in C:\xampp\htdocs\dbc.php:55 Stack trace: #0 C:\xampp\htdocs\detail.php(4): Dbc->getById('1') #1 {main} thrown in C:\xampp\htdocs\dbc.php on line 55
記
dbc.php
<?php
class Dbc
{
protected $table_name;
protected function dbConnect()
{
$dsn = 'mysql:host=localhost;dbname=blog_app;charset=utf8';
$user = 'blog_user';
$pass = '**********';
try {
$dbh = new PDO($dsn, $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
} catch (PDOException $e) {
echo '接続失敗' . $e->getMessage();
exit();
};
return $dbh;
}
public function getAll()
{
$dbh = $this->dbConnect();
//①SQLの準備
$sql = "SELECT * FROM $this->table_name";
//②SQLの実行
$stmt = $dbh->query($sql);
//③SQLの結果を受け取る
$result = $stmt->fetchall(PDO::FETCH_ASSOC);
return $result;
$dbh = null;
}
public function setCategoryName($category)
{
if ($category == '1') {
return '日常';
} elseif ($category == '2') {
return '非日常';
} else {
return 'その他';
}
}
public function getById($id)
{
if (empty($id)) {
exit('idが不正です。');
}
$dbh = $this->dbConnect();
$stmt = $dbh->prepare("SELECT * FROM $this->$table_name Where id = :id");
$stmt->bindValue(':id', (int)$id, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$result) {
exit('本文がありません。');
}
return $result;
}
public function blogCreate($blogs)
{
$sql = 'INSERT INTO
blog(title, content, category, publish_status)
VALUES
(:title, :content, :category, :publish_status)';
$dbh = $this->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->execute();
$dbh->commit();
echo 'ブログを投稿しました!';
} catch (PDOException $e) {
$dbh->rollBack();
exit($e);
}
}
}
?>
detail.php
<?php
require_once('blog.php');
$blog = new Blog();
$result = $blog->getById($_GET['id']);
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ブログ詳細</title>
</head>
<body>
<h2>ブログ詳細</h2>
<h3>タイトル:<?php echo $result['title'] ?> </h3>
<p>投稿日時:<?php echo $result['post_at'] ?></p>
<p>カテゴリー:<?php echo $blog->setCategoryName($result['category']) ?></p>
<hr>
<p>本文:<?php echo $result['content'] ?></p>
</body>
</html>
誠に恐れ入ります。
アドバイスの程、宜しくお願い申し上げます。
お礼
ありがとうございます。 とりあえず、サポートBBSにて質問してみます。 ありがとうございました。