- ベストアンサー
$dbh関数のエラー対処法
- $dbh関数を使用している箇所でエラーが発生しています。エラーメッセージによると、dbConnect()関数が未定義であることが原因です。dbConnect()関数を定義するか、正しいファイルを読み込んでいるか確認してください。
- また、コードの一部にはコメントアウトされた箇所があります。必要な処理であればコメントを解除してください。
- さらに、blog.phpファイルには未定義のクラスや関数があります。クラスや関数を正しく定義するか、必要なコードを追加してください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
functionの頭とケツだけコメントアウトして何してるの? それ「箱の中身ぶちまけただけ」だから。 エラーどうこう以前の問題。 必要だから書いてあるものを勝手に消してエラーが出る。至極当然の結果。 自分が何をしているか分かってやっている? やけくそになっても被害が拡大するだけで、何の解決にもならないからね。 それから捕捉で質問しておいて、締め切るのは止めて下さい。回答する気が失せる。それとも説教されるのが嫌で、黙らせるために締め切っているだけ? あと「ありがとうございました」だけのお礼も不要。ありがとうと言っておきながら内容は何も理解していないのだから、ただ言ってるだけ。不快でしかない。 いい加減“基本を覚えて”ください。ブログを作るだの何だのは、プログラムの基本を理解出来てから言う言葉です。あなたの場合はその基本がすっぽり抜けています。 プログラムはスピーチと同じです。 話す内容(やりたい事)を上から順番に書いていくだけ。 プログラム学習でよく「何でも良いからプログラム言語を一つ覚えてから他の言語を勉強しろ」と言われると思いますが、これは『母国語を決めろ』と言ってるのです。 日本人が日本語以外を覚えられるのは、日本語を読み書き・話せるからでしょ? ロシア語しか読み書き出来ない人が日本語の教科書で英語を勉強しても理解出来ない。当然母国語の教科書を読むでしょう。 それと同じで、プログラムの書き方(構文)は言語によって異なるので、処理内容は同じでも書き方が変わってくる。日本語で話そうが、英語で話そうが、ロシア語で話そうが、話の中身は皆同じ。言葉が違うだけ。 母国語をまず覚えてください。 今のあなたは「見よう見まねで文字は書けても読めない」3才児です。そんな人が大学の参考書を読める訳がない。まずは「母国語を覚えて」からです。 以前私が「PHPはかじった程度で詳しくはないが」と回答したことがありますが、覚えていないでしょうね。 詳しく無くとも、母国語である他のプログラム言語を理解しているから、処理に違和感を感じるのです。 もう一度言います。 「母国語を話せる様になってください」 “話せる”とは「自分が思い描いた通りにプログラムを書ける」と言うことです。回りくどくても、稚拙な書き方でも、「ちゃんと動くプログラムを書ける」と言うことです。 書けない内は他人の真似もしないでください。真似したところで同じには絶対に出来ません。書ける様になってから真似をしてください。
その他の回答 (4)
- wormhole
- ベストアンサー率28% (1626/5665)
>Fatal error: Uncaught Error: Call to undefined function dbConnect() in エラーメッセージ読めませんか? それに「dbConnect()」の部分だけが違う質問何度もされて、何度もその回答してもらってますよね。 クラスを使って書かれてたものをベースにして、 なんとかクラスを使わないようにコメントアウトで対処しようとしてるように思えますけど、 クラスを理解できてない人がそれをやろうとしても無理なので、 クラスを使わないでやりたいのでしたらクラスを使わないやり方を一から学び直しましょう。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
もうひとつ、同じことをするのに もっと短く、かけるソースがあるのに、 (以前PHPサイトから紹介済みのやつ) わざわざ、長く書いてしかも、自分が理解できない コーディングを使った結果、自爆してるのを、 掲示板で自慢するのは、正直、ほめられたことじゃないので、 やめましょう!。 $stmt = $dbh->prepare("SELECT * FROM $this->table_name Where id = :id"); $stmt->bindValue(':id', (int)$id, \PDO::PARAM_INT); たとえばこれ、SQLステートメント テーブルが、ダイレクトなのに、idが何でマクロなの?ってのも だったら、 "Where id = ". (int)$id." ..."; // 意味は、ドットチェーン結合で検索 だけでいいんじゃないの? かなり重要ですから。 または、$this->table_nameをバインドにするか。 1個の事をやろうとするのに、全く別の、手法を まぜてしかも、地雷踏んでる。まずここをなおそうぜ! ちなみ、 "abc"と'abc'は、シングルの方が速度は速くなります。 基本的に無駄を最初から抑えておくことは、基本として こっち、水商売関連で、プログラムは趣味でしかない私でも、 これくらいはわかるんですが。。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
っていうか・・・ これ、基本以下というか論外なこと聞いてないか? $dbh = dbConnect(); これがよめないんでしょ? //protected function dbConnect() //{ で、意図的に削除した形跡があるんだが。 回答者さすがに、馬鹿にしてないか? これだと。 「自分で削除したものを呼べない!」 ってのが質問でしょ? これ、馬鹿でもわかる問題を 他のエンジニアにぶつけて楽しみたい?ってこと? ついでに言えば、protectedなので、元々呼べない気はするがね。 こいつの子供がいないと、親は継承されない。 (この意味が、まだ分からないはずだから、Class使うのをやめな!って 何回も言ってるが、無視ですか?)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
ながすぎるので、該当部のみを投稿してください。 エラーがある行がどこなのか? それに関係するソースだけにすること。 最低限の事は守りましょう! つまり、やりなおし!