PHP勉強中です。
PHPでデータベースからデータを取得して配列に格納するクラスを作成したいです。
下記のクラスではvar_dumpがコンストラクタ内と外側に2つあるため$booksの内容が2回表示されるはずが、1回しか表示されず、2回目の方はNULLになってしまっています。
このことからコンストラクタ内では変数$booksにデータベースの値が格納できているのに、インスタンス化してgetBooks()をしても$booksはからのままということになります。
どのようにすればインスタンス変数の$booksに配列を格納し、また自由に取り出すことができるでしょうか。
bookPdo.php
1<?php 2class bookPdo{ 3 //https://sugublog.org/php-base-db-control/#index_id7 4 private $books; 5 6 public function __construct() { 7 try { 8 $dsn = 'mysql:host=mysql;charset=utf8mb4;dbname=test;'; 9 $db = new PDO($dsn, 'root', 'mysql'); 10 $sql = 'SELECT * FROM book;'; 11 $stmt = $db->prepare($sql); 12 $stmt->execute(); 13 $result = $stmt->fetchAll(PDO::FETCH_ASSOC); 14 $books = $result; 15 var_dump($books); 16 } catch (PDOException $e) { 17 echo $e->getMessage(); 18 exit; 19 } 20 } 21 22 public function getBooks(){ 23 return $books; 24 } 25} 26 27 $bookpdo = new bookPdo(); 28 var_dump($bookpdo->getBooks()); 29 30?>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。