質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

805閲覧

comitメソッドが未定義メソッドとして処理ができない

shibachan

総合スコア5

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/08/27 03:47

functionのclass化

PHP(CakePHP)でブログのwebアプリシステムを作っています。
functionをまとめてclass化する機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

Uncaught Error: Call to undefined method PDO::comit() in C:\xampp\htdocs\blog_app\dbc.php:96 Stack trace:#0 C:\xampp\htdocs\blog_app\blog_create.php(23): Dbc->blogCreate(Array)#1 {main}thrown in C:\xampp\htdocs\blog_app\dbc.php on line 96

:

該当のソースコード

php

1<?php 2class Dbc 3{ 4 //1.データベース接続 5 //引数:なし 6 //返り値:接続結果を返す 7 function dbConnect(){ 8 $dsn = 'mysql:host=localhost;dbname=blog_app;charaset=utf8'; 9 $user = 'blog_user'; 10 $pass = 'shibata0'; 11 12 try {//通常処理 13 $dbh = new \PDO($dsn,$user,$pass,[//オプションの設定でSQL実行でエラーが起こった際に投げかける設定 14 \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, 15 ]); 16 }catch(PDOException $e){//例外(エラー)が発生した場合に処理 17 echo '接続失敗'.$e->getMessage(); 18 exit(); 19 }; 20 return $dbh; 21 } 22 23 //2.データを取得する 24 //引数:なし 25 //返り値:取得したデータ 26 function getAllBlog(){ 27 $dbh = $this->dbConnect(); 28 //➀SQLの準備 29 $sql = 'SELECT * FROM blog'; 30 //➁SQLの実行 31 $stmt = $dbh->query($sql);//queryに渡すことでsqlで実行したい内容をphpで行えるようになる 32 //➂SQLの結果を受け取る 33 $result = $stmt->fetchall(\PDO::FETCH_ASSOC); //引数のPDO::FETCH_ASSOCは、列名を記述し配列で取り出す設定をしている。配列の最後まで下記を実行し続ける 34 //var_dump($result);//データが受け取れているかの表示 35 return $result; 36 $dbh = null; 37 }//function getAllBlog 38 39 //取得したデータの表示 40 //$blogData = getAllBlog(); 41 42 43 //3.カテゴリー名を表示 44 //引数:数字 45 //返り値:カテゴリーの文字列 46 function setCategoryName($category){ 47 if($category === '1'){ 48 return '日常'; 49 }elseif($category === '2'){ 50 return 'プログラミング'; 51 }else{ 52 return 'その他'; 53 } 54 } 55 56 //引数:$id 57 //返り値:$result 58 function getBlog($id){ 59 if(empty($id)){ 60 exit('IDが不正です。'); 61 } 62 63 $dbh = $this->dbConnect(); 64 65 //SQL準備 66 $stmt = $dbh->prepare('SELECT * FROM blog where id = :id'); 67 //:idをプレースホルダーとすることで、sqlインゼクションを防ぐ 68 $stmt->bindValue(':id', (int)$id, \PDO::PARAM_INT); 69 70 //SQL実行 71 $stmt->execute(); 72 73 //結果を取得 74 $result = $stmt->fetch(\PDO::FETCH_ASSOC); 75 //var_dump($result); 76 if(!$result){ 77 exit('ブログが見つかりません'); 78 } 79 return $result; 80 } 81 82 function blogCreate($blogs){ 83 $sql = 'INSERT INTO 84 blog(title, content, category, publish_status) 85 VALUES 86 (:title, :content, :category, :publish_status)'; 87 $dbh = $this->dbConnect(); 88 $dbh->beginTransaction(); 89 try { 90 $stmt = $dbh->prepare($sql); 91 $stmt->bindValue(':title', $blogs['title'], \PDO::PARAM_STR); 92 $stmt->bindValue(':content', $blogs['content'], \PDO::PARAM_STR); 93 $stmt->bindValue(':category', $blogs['category'], \PDO::PARAM_INT); 94 $stmt->bindValue(':publish_status', $blogs['publish_status'], \PDO::PARAM_INT); 95 $stmt->execute(); 96 $dbh->comit(); 97 echo 'ブログを投稿しました'; 98 }catch(PDOException $e){ 99 $dbh->rollBack(); 100 exit($e); 101 } 102 } 103 104}//class 105?>

試したこと

class化をするまえの状態にすると、特にエラーが出てくるということは起きません。

補足情報(FW/ツールのバージョンなど)

こちらの動画を参考に作りました。手順などはすべて合っているはずです。
https://www.youtube.com/watch?v=nmV0JwVo3L8&list=PLCyDm9NTxdhIwBK3hsY_2GNg8BPgLMV1M&index=9

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PHPマニュアル確認しましょう。
commit
です。

投稿2020/08/27 03:51

編集2020/08/27 03:52
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shibachan

2020/08/27 03:57

回答ありがとうございます。 まさか、単純なスペルミスだとは思いませんでした。 以後気を付けます!
m.ts10806

2020/08/27 04:07

「スペルミス」という認識だと同じようなミスを必ずおかします。 機能名は言語仕様により決まっているものです。言語仕様なのでドキュメントを確認するのが確実です。 あと、IDEを利用すれば機能候補もコーディング中に出してくれるので、必需品です。メモ帳や汎用テキストエディタでは開発に使えません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問