前提・実現したいこと
別のファイルのクラスの中の関数で、定義した戻り値を、違うファイルで使いたい
発生している問題・エラーメッセージ
その関数を別ファイルに読み込み、prepareで使おうとすると、エラーが発生しました。
エラーメッセージ Warning: Undefined variable $pdo in C:\xampp\htdocs\word.php on line 41 Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\xampp\htdocs\word.php:41 Stack trace: #0 {main} thrown in C:\xampp\htdocs\word.php on line 41
該当のソースコード
PHP
1//connect.php 2<?php 3//const.phpファイル読み込み 4require_once('const.php'); 5class connect { 6 /** 7 * Undocumented function 8 * データベース接続関数 9 * @return $pdo データベース接続インスタンス 10 */ 11 public function pdo(){ 12 $dsn = "mysql:dbname=".DB_NAME.";host=".HOST.";charset=".UTF; 13 $options = array( 14 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 15 PDO::ATTR_EMULATE_PREPARES => false, 16 PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' 17 ); 18 try { 19 // データベース接続 20 $pdo = new PDO($dsn, USER, PASSWORD, $options); 21 echo 'データベース接続成功'; 22 return $pdo; 23 } 24 catch (PDOException $e){ 25 echo "データベース接続エラー".$e->getMessage(); 26 exit(); 27 } 28 } 29} 30?>
PHP
1 <?php 2 // connect.phpを読み込む 3 require_once('connect.php'); 4 // connect.phpのクラスを使う 5 $word = new connect(); 6 $word->pdo(); 7 // フォームで登録された単語を取得 8 $wordName = $_POST['wordName']; 9 $wordMean = $_POST['wordMean']; 10 // sqlに登録した単語を追加する 11 $sql = 'INSERT INTO word (wordName, wordMean) VALUES (:wordName, :wordMean)'; 1241 $stmt = $pdo->prepare($sql); 13 $stmt->bindValue(':wordName', $wordName); 14 $stmt->bindValue(':wordMean', $wordMean); 15 $stmt->execute(); 16 echo "単語登録完了"; 17 ?>
試したこと
$word->$pdo->prepare($sql);と記述してもエラーが消えなかった。
補足情報(FW/ツールのバージョンなど)
データベース接続は成功しております。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/16 04:38
2021/05/16 04:47