質問するログイン新規登録

質問編集履歴

3

コードの修正

2021/05/29 03:57

投稿

yy_hatena
yy_hatena

スコア12

title CHANGED
File without changes
body CHANGED
@@ -73,7 +73,7 @@
73
73
       ここが、ちゃんと接続されるのか?を知りたいです。
74
74
       ****************************************/
75
75
       $this->Class_A->method_1($date);
76
-
76
+      ++$d ;
77
77
     }
78
78
 
79
79
     // データベース切断

2

追加項目のため

2021/05/29 03:57

投稿

yy_hatena
yy_hatena

スコア12

title CHANGED
File without changes
body CHANGED
@@ -83,6 +83,8 @@
83
83
 
84
84
  ```
85
85
  このとき、method_1() という関数は、正常にデータベースに接続されるのか?を知りたいです。
86
+ ※ 現状、接続できずにエラーが出ています。
87
+
86
88
  また、上記のような場合に、もっと正しいデータベース接続箇所があれば、教えて頂きたいです。
87
89
  ※ フレームワーク等は使わずに、勉強のために知りたいです。
88
90
 

1

投稿時に、以前のセッションが残っていてそれが反映してしまい、最新の内容が投稿できなかったため

2021/05/29 03:54

投稿

yy_hatena
yy_hatena

スコア12

title CHANGED
File without changes
body CHANGED
@@ -1,12 +1,24 @@
1
1
  PHP 初心者です。どうぞ宜しくお願いします。
2
2
 
3
+ <利用環境>
4
+ PHP 7
5
+ MySQL 5.6
6
+
7
+ ##知りたいこと
8
+ php の PDO を利用したMySqlへの接続で、例えば、
9
+ 「A」という名前のクラス内で、SQL文 が書かれた method_1() という関数を、
10
+ 「B」という名前のクラス内で実行した場合、データベースへの接続は正常にされるのか?を知りたいです。
11
+ このとき、「A」という名前のクラスでは、データベースへの接続は行いません。
12
+
13
+ ---
14
+
3
- 早速すが、下記のような接続はダなやつしょうか?
15
+ コード書くと下記のようなージす。
4
- より良い方法がありましたら、教えて頂きたいです。どうぞが宜しくお願い致します。
5
16
  ```PHP
6
17
  // php_1.php に記述
7
18
  class DB {
8
19
 
9
20
  protected function DbConnect(){
21
+
10
22
  $this->user = 'user';
11
23
  $this->pw = 'pw';
12
24
  $this->dbname = 'dbname';
@@ -15,18 +27,30 @@
15
27
  $this->db_host = 'db_host';
16
28
  $this->connect = new PDO($this->db_host, $this->user, $this->pw);
17
29
  $this->connect->query('SET NAMES utf8');
30
+
18
31
  }
19
32
 
20
33
  }
21
34
 
22
35
 
23
36
  // php_2.php に記述
24
- class AAA {
37
+ class A extends DB{
25
38
 
26
-   public function method_1(){
39
+   public function method_1($var){
27
-    // 何らかのSQL処理が書かれた関数
40
+
28
-    // 色々なところで使われる関数です。データベースには接続しない状態です。
41
+    // 色々なところで使うことを想定した関数です。ここでは、データベースには接続しない状態です。
42
+    /************************************************************************
43
+    理由
29
-    // 理由=> この関数をループ内でも使用する場合があり、ここで接続をしてしまうと、ループの回数分、接続を繰り返すことで重くなりそう、と勝手に考えています。
44
+    この関数をループ内でも使用する場合があり、ここで接続をしてしまうと、
45
+    ループの回数分、接続を繰り返すことで重くなりそう、と思ってたりしますがどうなんでしょうか?そんなことはないでしょうか...?
46
+    ***********************************************************************/
47
+    $this->getDate = $var ; // $var はエスケープされているものとします
48
+    $sql = 'SELECT * FROM `table_name` WHERE `date` = :date';
49
+    $stmt = $this->connect->prepare($sql);
50
+    $stmt->bindParam(":date", $this->getDate, PDO::PARAM_INT);
51
+    $stmt->execute();
52
+    $sql_error = $stmt->errorInfo();
53
+    // 以降はSQLの実行結果を分岐して結果を return で返します。
30
54
    }
31
55
 
32
56
  }
@@ -34,24 +58,33 @@
34
58
 
35
59
 
36
60
  // php_3.php に記述
37
- class BBB extends DB {
61
+ class B extends DB {
38
62
 
39
63
     // データベース接続
40
64
     $this->DbConnect();
41
65
     
42
-    // class AAA 読み込み処理など
66
+    // class A
43
-    $this->Class_AAA = new AAA();
67
+    $this->Class_A = new A();
68
+    
69
+    // 日付などのループ処理
70
+    while(checkdate($m, $d, $y)){
71
+      $date = $y.$m.$d;
72
+      /****************************************
73
+      ここが、ちゃんと接続されるのか?を知りたいです。
74
+      ****************************************/
75
+      $this->Class_A->method_1($date);
44
76
 
45
-    // class AAA の method_1() を実行
46
-    // ここが、接続されるのか?を知りたいです。
77
+    }
47
-    $this->Class_AAA->method_1();
48
78
 
49
79
     // データベース切断
50
80
     $this->connect = NULL ;
51
81
 
52
82
  }
53
83
 
84
+ ```
85
+ このとき、method_1() という関数は、正常にデータベースに接続されるのか?を知りたいです。
86
+ また、上記のような場合に、もっと正しいデータベース接続箇所があれば、教えて頂きたいです。
87
+ ※ フレームワーク等は使わずに、勉強のために知りたいです。
54
88
 
55
-
89
+ すみません、上記コードでは情報が足りないかもしれませんが、お分かりになる範囲で教えて頂けると幸いです。
56
-
57
- ```
90
+ どうぞ宜しくお願い申し上げます。