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

質問編集履歴

2

発生した事象について、新たな事実を追記しました

2018/03/06 08:07

投稿

TakahashiManabu
TakahashiManabu

スコア11

title CHANGED
File without changes
body CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  そこで実行されているSQL文を別のクラスファイル(Bとします)に移し、そのオブジェクトのメソッドとして実行すると正常に処理されます。
6
6
 
7
- そうすると、Aのクラスファイル原因がありそうですが、Aのクラスには別のメソッドも明記されており、それらは正常に機能します。
7
+ そうすると、Aのクラスファイル原因がありそうです~~が、Aのクラスには別のメソッドも明記されており、それらは正常に機能します~~(追記:検証の結果、Aのクラスファイルにおいては、DBに接続しようとするメソッドにおいて、全てPDO接続がNULLとなっていました)
8
8
 
9
9
  特定のクラスファイルにおいてのみ、特定のメソッドがエラーとなり、それは別のクラスファイルにおいてなら実行可能であるというような状況だとすると、どのような原因でそうなるのかが分からず苦労しております。ちなみに、Aのクラスファイルも、Bのクラスファイルも、ベースとなるファイルを継承し、pdo接続を可能としております。
10
10
 

1

簡単にPHPスクリプトを記述しました

2018/03/06 08:06

投稿

TakahashiManabu
TakahashiManabu

スコア11

title CHANGED
File without changes
body CHANGED
@@ -8,4 +8,145 @@
8
8
 
9
9
  特定のクラスファイルにおいてのみ、特定のメソッドがエラーとなり、それは別のクラスファイルにおいてなら実行可能であるというような状況だとすると、どのような原因でそうなるのかが分からず苦労しております。ちなみに、Aのクラスファイルも、Bのクラスファイルも、ベースとなるファイルを継承し、pdo接続を可能としております。
10
10
 
11
- ソースを提示したいのですが、とてつもなく膨大でどこまで記載すればよいかわからず、ここまでの状況を取り急ぎ報告いたします。もし、上記のエラーコードが発生する原因にお心当たりがあれば、ご教示いただけますと幸いです。
11
+ ソースを提示したいのですが、とてつもなく膨大でどこまで記載すればよいかわからず、ここまでの状況を取り急ぎ報告いたします。もし、上記のエラーコードが発生する原因にお心当たりがあれば、ご教示いただけますと幸いです。
12
+
13
+ **追記いたしました**
14
+
15
+ 下記に簡単ながらコードを記述いたします。
16
+ はじめにコントローラーとなるクラスファイルです。
17
+
18
+ ```PHP
19
+ //コントローラーA
20
+
21
+ <?php
22
+
23
+ class controllerA extends BaseController{
24
+
25
+ public function __construct(){
26
+
27
+ $this->fileModel = new fileModel();
28
+ $this->transact = new transactModel();
29
+ $this->mailer = new mailerModel();
30
+ $this->systemModel = new systemModel();
31
+
32
+ }
33
+
34
+ function methodCA(){
35
+
36
+ if(isset($_FILES['file']['name'])){
37
+
38
+ $file = $_FILES['file']['name'];
39
+
40
+ //ステータスコードがあればファイルチェックメソッドに移行
41
+ if(isset($_GET['statusCode']) && $_GET['statusCode']!=''){
42
+
43
+ //ファイルチェック
44
+ list($inspectedResult,$message) = $this->fileModel->fileInspection($file,$_GET['statusCode']);
45
+
46
+ //ファイルチェックを通過
47
+ if($inspectedResult == TRUE){
48
+ $filename = substr($file,0,9);
49
+
50
+ //格納ディレクトリを指定
51
+ $dir = _UPLOAD_DIR.'manuscripts/'.$filename.'/';
52
+
53
+ //ファイル名を変更 - ハッシュ値へ
54
+ $filehash = hash_file("sha1",$_FILES["file"]["tmp_name"]);
55
+
56
+ //ファイルを格納
57
+ $this->fileModel->storeFile($filename,$dir,$filehash);
58
+ echo '<p>'.$message.'</p>';
59
+
60
+ //ファイルアップロード情報の記録:**このメソッドがうまく機能しないのです**
61
+ $this->fileModel->registerFileHistory($filename,$filehash,$_FILES['file']['name'],$_GET['statusCode'],CURRENT);
62
+
63
+ //ステータスコードを変更する手続きへ
64
+ $this->transact->proceedStatusCode($_GET['statusCode'],$filename);
65
+
66
+ }else{
67
+
68
+ //ファイルチェックの結果、不適切だと認められた場合
69
+ echo '<p>'.$message.'</p>';
70
+ }
71
+ }
72
+
73
+ }else{
74
+
75
+ echo "ファイルがない・・・";
76
+ }
77
+
78
+ }
79
+
80
+
81
+ }
82
+ ```
83
+ 次にモデルを司るクラスファイルです。
84
+ ```PHP
85
+ class fileModel extends BaseModel{
86
+
87
+ //このメソッドを実行するとエラーになります。
88
+ public function registerFileHistory($articleID,$vName,$aName,$statusCode,$date){
89
+
90
+ $this->pdo->beginTransaction();
91
+
92
+ try{
93
+
94
+ $sql="INSERT INTO cl_file_inventry(articleID,virtualFileName,actualFileName,statusCode,dateUpdated) VALUES (:ID,:vName,:aName,:statusCode,:date)";
95
+ $stmh=$this->pdo->prepare($sql);
96
+ $stmh->bindValue(':ID',$articleID,PDO::PARAM_STR);
97
+ $stmh->bindValue(':vName',$vName,PDO::PARAM_STR);
98
+ $stmh->bindValue(':aName',$aName,PDO::PARAM_STR);
99
+ $stmh->bindValue(':statusCode',$statusCode,PDO::PARAM_STR);
100
+ $stmh->bindValue(':date',$date,PDO::PARAM_STR);
101
+
102
+ $stmh->execute();
103
+ $stmh->closeCursor();
104
+
105
+ $this->pdo->commit();
106
+
107
+ }catch(PDOException $Exception){
108
+ $this->pdo->rollBack();
109
+ print "エラー:".$Exception->getMessage();
110
+ }
111
+
112
+ }
113
+
114
+ }
115
+
116
+ //・・・・以下、いくつかのメソッド
117
+
118
+ ```
119
+ 最後に、ベースとなるモデルファイルです。
120
+ ```PHP
121
+ <?php
122
+
123
+ class BaseModel{
124
+
125
+ protected $pdo;
126
+
127
+ public function __construct(){
128
+ $this->db_connect();
129
+ }
130
+
131
+ //----------------------------------------------------
132
+ // データベース接続
133
+ //----------------------------------------------------
134
+ private function db_connect(){
135
+ try {
136
+ $this->pdo = new PDO(_DSN, _DB_USER, _DB_PASS,
137
+ array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")
138
+ );
139
+ $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
140
+ $this->pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
141
+
142
+ }catch(PDOException $Exception){
143
+ die('エラー :' . $Exception->getMessage());
144
+ }
145
+ }
146
+
147
+
148
+
149
+ }
150
+
151
+ ?>
152
+ ```