前提・実現したいこと
ここに質問の内容を詳しく書いてください。
(例)PHPで掲示板を作っています。
データベースへの接続処理を、別ファイルから関数で呼び出そうとしたら以下のエラーメッセージが発生しました。
関数を使わずに全て同じファイルに書いた場合は正常に動作しました。
発生している問題・エラーメッセージ
Notice: Undefined variable: db in /opt/lampp/htdocs/keijiban1.copy/model.php on line 14 Fatal error: Uncaught Error: Call to a member function prepare() on null in /opt/lampp/htdocs/keijiban1.copy/model.php:14 Stack trace: #0 /opt/lampp/htdocs/keijiban1.copy/comment.php(20): outputdb() #1 {main} thrown in /opt/lampp/htdocs/keijiban1.copy/model.php on line 14
該当のソースコード
php
1 2try{ 3 $db=new PDO('mysql:dbname=keijiban1;host=127.0.0.1;charset=utf8','root',''); 4 5 function inputdb(){ 6 //コメントをデータベースに登録 7 $statement=$db->prepare('INSERT INTO comments SET comment=?, created_at=NOW()'); 8 $statement->execute(array($_POST['comment'])); 9 } 10 11 function outputdb(){ 12 //コメントをデータベースから取り出し 13 $comments=$db->prepare('SELECT * FROM comments ORDER BY id DESC LIMIT ?,5'); 14 $comments->bindParam(1,$start,PDO::PARAM_INT); 15 $comments->execute(); 16 } 17}catch(PDOException $e){ 18 echo 'DB接続エラー:'.$e->getMessage(); 19}
試したこと
try{}の中に書かれているデータベース登録、取出しの処理をtry{}catch{}の下に書いてみた。
データベース登録、取り出しの処理を元のファイルの関数呼び出しの部分に書いていた時は正常に動作していた。
補足情報(FW/ツールのバージョンなど)
元のファイルでの関数の呼び出しは、
inputdb();
と
outputdb();
で書いています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。