$dbh = dbConnect();
いつもお世話になりありがとうございます。
標記の件。
エラーになります。
どう直せばいいでしょうか?
エラーメッセージは
Fatal error: Uncaught Error: Call to undefined function dbConnect() in C:\xampp\htdocs\blog_create.php:9 Stack trace: #0 {main} thrown in C:\xampp\htdocs\blog_create.php on line 9
です。
コーディングは下記です。
<?php
//require_once('form.html');
require_once('blog.php');
$sql = "INSERT INTO
table_name(name,title,category,content)
VALUES
(:name, :title, :category, :content,)";
$dbh = dbConnect();
$dbh->beginTransaction();
try {
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':id', $blogs['id'], PDO::PARAM_INT);
$stmt->bindValue(':name', $blogs['name'], PDO::PARAM_STR);
$stmt->bindValue(':title', $blogs['title'], PDO::PARAM_STR);
$stmt->bindValue(':category', $blogs['category'], PDO::PARAM_STR);
$stmt->bindValue(':content', $blogs['content'], PDO::PARAM_STR);
$stmt->bindValue(':post_at', $blogs['post_at'], PDO::PARAM_INT);
$stmt->execute();
$stmt->commit();
echo 'ブログを投稿しました!';
} catch (PDOException $e) {
$dbh->rollBack();
exit($e);
}
blog.php
<?php
//require_once('dbc.php');
//<?php
//class Dbc
//{
// protected $table_name;
//protected function dbConnect()
//{
$dsn = 'mysql:host=localhost;dbname=blog_app;charset=utf8';
$user = 'blog_user';
$pass = 'rhythm0!KT';
try {
$dbh = new \PDO($dsn, $user, $pass, [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
]);
} catch (PDOException $e) {
echo '接続失敗' . $e->getMessage();
exit();
};
return $dbh;
//}
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;
}
$dbh = $this->dbConnect();
$sql = "SELECT * FROM $this->table_name";
$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;
//}
//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);
}
}
function delete($id) {
if (empty($id)) {
exit('idが不正です。');
}
$dbh = $this->dbConnect();
$stmt = $dbh->prepare("DELETE FROM $this->table_name Where id = :id");
$stmt->bindValue(':id', (int)$id, \PDO::PARAM_INT);
$stmt->execute();
echo 'ブログを削除しました!';
return $result;
}
//}
?>
度々申し訳ございません。
教えてください。
ご回答のほど宜しくお願い申し上げます。
お礼
正直なところphpもあまり理解できていません。いろんなソースを見て分からなくなってしまいました。 ただソースはWHERE句の部分以外は本からもってきているので大丈夫かなと思っていました。 プリアドステートメントという言葉もわからずここで質問しているなんて恐縮です。 もう少し参考書などで勉強したいと思います。 素早いご回答ありがとうございました。